PHP / cURL curl_exec()错误?

时间:2012-06-29 21:17:56

标签: php curl

这是我第一次使用cURL,所以这可能是一个愚蠢的错误,但代码如下:

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    echo $output;

打印“1”。据我所知,CURLOPT_RETURNTRANSFER应确保curl_exec返回0或内容,但此处它的行为就好像CURLOPT_RETURNTRANSFER尚未设置为true。我错过了一些明显的东西吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

代码似乎是正确的,请尝试curl_getinfo()

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$outputInfo = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
echo $output . PHP_EOL;
echo $outputInfo;

资源可能在字面上返回一个带有“1”的正文

答案 1 :(得分:1)

我遇到了类似的问题,我使用

解决了这个问题
curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);

问题是服务器回放了一个自定义错误页面,cURL解释为成功。通过使用此选项,可以正确检测到404的自定义错误页面标题代码,并检测到URL失败。

OP指的是使用facebook作为目标,因此我怀疑目标网址也使用了自定义错误消息。

答案 2 :(得分:-1)

我使用Guzzle,它是围绕cURL的OOP包装器。 (虽然因为你刚刚使用GET请求,file_get_contents($url);会正常工作。但是,您的代码没有真正的问题。您确定网址有效吗?

另外,检查以确保curl_setopt每次调用都返回true,并尝试使用该函数设置CURLOPT_URL。