2015-05-29 6 views
0

При выполнении запроса 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

+0

переменная proxy_http существует внутри phpinfo(), но не установлена ​​ни в одном .ini-файле. Я не знаю, где еще искать. Я попытался запустить команду grep на ip, которая установлена ​​как прокси-сервер, но мой сеанс истекает, прежде чем он сможет закончить – Kevin

ответ

0

SUSE специально SLES 11 имеет некоторые параметры прокси-сервера можно получить доступ в каталог или через YAST, как я сделал. Изменение этих параметров и включение или отключение прокси-сервера повлияют на вызовы, выполненные с помощью командной строки в Linux, но не влияют на завитущие вызовы, выполняемые через PHP. Перезапуск Apache также ничего не изменил. PHP по-прежнему имеет переменные окружения для http_proxy. Перезагрузка всего сервера (init 6) после того, как я удалил все настройки прокси-сервера через YAST, исправил проблему с прокси-сервером для меня. Просто отключить прокси-сервер было недостаточно. Мне нужно было очистить настройку прокси в ястребе.