2012-06-29 68 views
0

这是使用卷曲所以它可能是我的一个愚蠢的错误,但下面的代码我第一次:PHP/cURL curl_exec()错误?

$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。我错过了明显的东西吗?

谢谢!

+0

你的代码对于你所描述的理想结果是正确的,听起来像'$ url'中的服务器在响应体中返回'1' - 如果你在浏览器中加载它,你会得到什么? '$ url'是什么? var_dump($ output);(而不是'echo')显示什么? – DaveRandom

+0

@DaveRandom Huh。的var_dump($输出);显示bool(true)...暗示页面的内容不是1,它确实是返回true的函数,是的? $ url是https://www.facebook.com/feeds/page.php?id=159153294131249&format=atom10(来自Facebook粉丝页面的一个Feed,我希望它可以变成一个简单的XML对象)。谢谢! – user1492165

+0

@ user1492165尝试:http://itslennysfault.com/easy-way-to-load-facebook-news-feed-through-rs-a-at1010 – miqbal

回答

0

我会用Guzzle,这是围绕卷曲的OOP包装。 (虽然因为你只是使用GET请求,所以file_get_contents($url);可以正常工作)。不过,您的代码没有真正的问题。你确定网址有效吗?

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

+0

'$ output = file_get_contents($ url); echo $ output;'不打印任何东西。斜杠它必须导致某种错误,因为执行后没有PHP。但你是对的,我觉得我应该能够使用该功能... – user1492165

+0

好吧,是,display_errors或错误登录? – Lusitanian

+0

这些事情似乎都没有,我没有访问php.ini文件...但是我在另一台服务器上尝试了file_get_contents(),它工作得很好,所以我敢打赌,这只是另一台服务器上PHP配置的一些奇怪设置。谢谢你的帮助! – user1492165

0

代码似乎是正确的,尝试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”

0

我有一个类似的问题,我用解决

curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 

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

OP指的是使用Facebook作为他们的目标,所以我怀疑目标网址也使用了自定义错误消息。