错误 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;
}
我是 运行 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;
}