PHP CURL什么都不返回

jM2*_*.me 24 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');
Run Code Online (Sandbox Code Playgroud)

上面的代码根本不返回任何内容 我试图通过curl获取的页面使用http身份验证.

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

rze*_*erg 58

通过这样做开始,看看你得到了什么,之后问题是很明显的:

检查curl_exec后请求是否有错误:

if(curl_errno($ch)){
    echo 'Curl error: ' . curl_error($ch);
}
Run Code Online (Sandbox Code Playgroud)

这将为您提供足够的信息,以了解请求是否有错误.如果没有错误,您可以检查curl_exec之后发送的请求,以便您可以仔细检查发送的所有内容是否到位:

print_r(curl_getinfo($ch));
Run Code Online (Sandbox Code Playgroud)

编辑:评论后,这是你正在寻找缺少的东西:

您需要设置选项CURLOPT_HTTPAUTH.

引自php.net的主题:

要使用的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 (2认同)