2012-06-29 45 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作爲他們的目標,所以我懷疑目標網址也使用了自定義錯誤消息。