我在IIS 8.5下运行在Windows服务器12R2上运行的PHP 5.6.36 每当我调用此代码时,我会收到一个“错误代码:6”回显和一个空的$ responseText,尽管我可以通过浏览器访问此地址。
我尝试将CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST切换为true设置并使用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;
}
答案 0 :(得分:0)
好的,所以我终于解决了这个问题。服务器上运行了一个应用程序代理。我检查了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;
}