PHP CURL什么也没有返回
function ParseUrl($URL)
{
$crl = curl_init();
curl_setopt ($crl, CURLOPT_URL, $URL);
curl_setopt ($crl, CURLOPT_PORT, 8086);
curl_setopt ($crl, CURLOPT_USERPWD, "admin:pass");
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, 5);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
echo ParseUrl('http://xxx.me/serverinfo');
上面的代码不会返回任何内容。我试图用curl获得的页面使用http认证的东西。PHP CURL什么也没有返回
我是否缺少一些简单或什么?
通过这样开始了,看看你会得到什么,之后,这将是非常明显的问题是什么:
检查是否有与curl_exec后请求的错误:
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
这将为您提供足够的信息来了解请求是否存在错误。如果没有错误,你可以检查curl_exec后发送的请求,所以你可以仔细检查发送的一切就绪:
print_r(curl_getinfo($ch));
编辑:在评论这是你在找什么东西丢失:您需要设置选项CURLOPT_HTTPAUTH
。
Quote from php.net on the subject:
的HTTP认证方法(一个或多个),以 使用。选项为:CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE,CURLAUTH_NTLM, CURLAUTH_ANY和CURLAUTH_ANYSAFE。
按位| (或)运算符可以是用于组合多个方法的 。 如果这样做了,cURL将轮询 服务器以查看它支持的方法 并选择最好的一个。
CURLAUTH_ANY是 的别名CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM。
CURLAUTH_ANYSAFE是 的别名CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM。
投票和三个赞成基本的调试步骤。 :D – OpenSorceress 2011-06-12 21:43:05
Curl不会返回任何错误,但会返回print_r(curl_getinfo($ ch));我注意到[http_code] => 401> _ 2011-06-12 21:45:49
即使file_get_contents具有完整的url(凭证和端口)也会返回401 Unauthorized。但我可以简单地导航到链接和浏览器,并且它可以正常工作。 – 2011-06-12 21:49:06
如果您在用户名和密码中有任何特殊字符(例如,如果您的用户名是电子邮件地址,请输入“@”符号),请确保它们已被转义。 – lonesomeday 2011-06-12 21:41:33
不,用户名只是“admin”,密码也很简单。 – 2011-06-12 21:46:44