Ошибка 6: curl не может разрешить имя хоста - PullRequest
0 голосов
/ 01 июня 2018

Я использую PHP 5.6.36 на Windows Server 12R2 под IIS 8.5. Каждый раз, когда я вызываю этот код, я получаю эхо-код «error code: 6» и пустой $ responseText, хотя я могу достичь этого адреса с помощьюбраузер.

Я пытался переключить CURLOPT_SSL_VERIFYPEER и CURLOPT_SSL_VERIFYHOST в истинные настройки и использовать адреса https: //, но безрезультатно.Не понимаю, почему я могу получить эти адреса через браузер, но не из командной строки.

function genericGet($url,$userName,$passWord){

//overriding $url for the purposes of test
$url = "http://www.google.com";

$reqDefaults = array(
    CURLOPT_URL             => $url,
    CURLOPT_POST            => false,
    CURLOPT_HEADER          => false,
    CURLOPT_SSL_VERIFYPEER  => false,
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_SSL_VERIFYHOST  => false,
    CURLOPT_HTTPAUTH        => CURLAUTH_BASIC,
    CURLOPT_USERNAME        => $userName,
    CURLOPT_PASSWORD        => $passWord
);

$curlReq = curl_init();
$responseText = curl_exec($curlReq);
echo "error code:".curl_errno($curlReq)."\r\n";
curl_close($curlReq);

return $responseText;
}

1 Ответ

0 голосов
/ 01 июня 2018

Хорошо, так что я наконец-то решил это.На сервере запущен прокси приложения.Я проверил настройки интернета в Firefox и нашел адрес прокси, затем добавил настройку CURLOPT_PROXY в мой массив setopt, и это сработало.Итоговый код выглядел так:

function genericGet($url,$userName,$passWord){

//overriding $url for the purposes of test
$url = "http://www.google.com";

$reqDefaults = array(
    CURLOPT_URL             => $url,
    CURLOPT_POST            => false,
    CURLOPT_HEADER          => false,
    CURLOPT_SSL_VERIFYPEER  => false,
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_SSL_VERIFYHOST  => false,
    CURLOPT_HTTPAUTH        => CURLAUTH_BASIC,
    CURLOPT_USERNAME        => $userName,
    CURLOPT_PASSWORD        => $passWord,
    CURLOPT_PROXY           => 'proxyaddress:8080'
);

$curlReq = curl_init();
$responseText = curl_exec($curlReq);
echo "error code:".curl_errno($curlReq)."\r\n";
curl_close($curlReq);

return $responseText;
}
...