Есть ли эквивалент curl --resolve ....
в библиотеке PHP CURL?
Справочная информация. У меня есть циклический DNS (одно доменное имя разрешено для нескольких IP-адресов), и я хочу отправить запрос на конкретный хост. Я использую виртуальные хосты на основе имени apache, и поэтому правильное имя домена должно появляться в HTTP-запросе.
Я попытался указать IP в URL- curl_setopt($ch, CURLOPT_URL, '127.0.0.1')
запроса: curl_setopt($ch, CURLOPT_URL, '127.0.0.1')
и используя curl_setopt($ch, CURLOPT_HTTPHEADER, 'Host: example.com')
. Он работает для HTTP, но для HTTPS я получаю ошибку проверки SSL (видимо, CURL проверяет сертификат против имени хоста URL и NOT Host:
hostname).
Использование файла hosts
не является удобным вариантом.
Во-первых, лучший способ получить ответ на то, как любой вариант curl переводит на libcurl (или PHP / CURL), – с помощью опции -libcurl .
Если вы это сделаете, вы узнаете, что –resolve переводит CURLOPT_RESOLVE с libcurl, поддерживаемый в PHP с версии 5.5.0 . Поддерживается libcurl с 7.21.3 .
У меня есть решение этого с помощью Python.
В .php-файле просто выполните эхо-вывод вывода python:
<?php echo passthru("python python.py"); ?>
В python.py:
import httplib conn = httplib.HTTPSConnection('127.0.0.1'); url = "example.com" conn.request("GET", url) content = conn.getresponse() print content.read() conn.close()
если вы собираетесь беспокоиться о том, чтобы развить другой процесс, просто вилка скручивается с опцией «–resolve» по сравнению с еще одним скриптом.