При выполнении запроса curl через PHP curl получает «невозможно подключиться к хосту». Когда я дамп локон информация primary_ip не IP запрашиваемого сервераPHP cURL request primary_ip отличается от url cURL
$soapURL ="www.google.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $soapURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$header[] = "SOAPAction: ". "";
$header[] = "MIME-Version: 1.0";
$header[] = "Content-type: text/xml; charset=utf-8";
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
echo curl_getinfo($ch) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
$info = curl_getinfo($ch);
var_dump($info);
это прекрасно работает на моем тестовом сервере, а не на производстве. На рабочем сервере это ответ, который я получаю.
Array 7 couldn't connect to host array(23) { ["url"]=> string(21) "http://www.google.com" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0) ["namelookup_time"]=> float(2.7E-5) ["connect_time"]=> float(0) ["pretransfer_time"]=> float(0) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) ["redirect_url"]=> string(0) "" ["primary_ip"]=> string(10) "10.1.99.87" ["certinfo"]=> array(0) { } }
primary_ip => 10.1.99.87 моя локальная машина (не работает этот код PHP) Похоже, локон пытается подключиться к моей локальной машине вместо URL я дал его. Я попробовал это с другого компьютера, и IP остался в качестве моей машины, он не изменился по сравнению с новой машиной.
, когда я использую тестовый сервер я получаю
Array 0 array(23) { ["url"]=> string(21) "http://www.google.com" ["content_type"]=> string(24) "text/html; charset=UTF-8" ["http_code"]=> int(405) ["header_size"]=> int(260) ["request_size"]=> int(948) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0.120098) ["namelookup_time"]=> float(0.029716) ["connect_time"]=> float(0.073289) ["pretransfer_time"]=> float(0.073292) ["size_upload"]=> float(815) ["size_download"]=> float(1453) ["speed_download"]=> float(12098) ["speed_upload"]=> float(6786) ["download_content_length"]=> float(1453) ["upload_content_length"]=> float(0) ["starttransfer_time"]=> float(0.119125) ["redirect_time"]=> float(0) ["redirect_url"]=> string(0) "" ["primary_ip"]=> string(14) "74.125.198.106" ["certinfo"]=> array(0) { } }
, который является тем, что должно произойти.
Раньше были переменные среды Linux, установленные для http_proxy, которая была установлена на мою машину, которую я установил как пустую. Кроме того, выполнение криволинейного вызова из командной строки отлично работает. Это всего лишь вызов curl, который php пытается сделать сбой.
Similar Problem with workaround solution
переменная proxy_http существует внутри phpinfo(), но не установлена ни в одном .ini-файле. Я не знаю, где еще искать. Я попытался запустить команду grep на ip, которая установлена как прокси-сервер, но мой сеанс истекает, прежде чем он сможет закончить – Kevin