PHP CURL什么都不返回

时间:2011-06-12 21:33:49

标签: php curl http-authentication

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身份验证。

我错过了一些简单或什么?

1 个答案:

答案 0 :(得分:56)

首先这样做,看看你得到了什么,之后问题就是很明显:

在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。