错误 6:curl 无法解析主机名

Error 6: curl can't resolve host name

我是 运行 PHP 5.6.36 运行 在 windows 服务器 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;
}

好的,所以我终于解决了这个问题。服务器上有一个应用程序代理 运行。我检查了 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;
}