2010-03-16 60 views
0
$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r") 
    or die("Error reading RSS data."); 

上述編碼在本地主機正常工作;;;在服務器編碼問題

但在服務器顯示 「錯誤讀取RSS數據。」 ......

我不知道爲什麼....

有人請我解釋...

我在等.. 。

感謝

回答

2

一個可能的原因可能是allow_url_fopen可能被禁用(引用)

此選項使URL感知 fopen封裝協議使得可以訪問如文件 URL對象。

您可以使用phpinfo()函數進行檢查,看看它是否已啓用。


如果未啓用,則必須使用其他解決方案發送取回該遠程內容的HTTP請求。

使用curl可能是一個解決方案,例如;一個快速的例子見curl_execcurl_setopt列出所有可能的選項。
這裏有一個簡單的請求會是什麼樣子,但:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://feeds.reuters.com/Reuters/PoliticsNews?format=xml"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$feed = curl_exec($ch); 
curl_close($ch); 

這將讓你進的內容$feed - 但檢查的curl_setopt手冊頁:有一些經歷了這麼多的選擇清單不是一個壞主意。


不過,作爲預防措施,纔去這樣,你可能要檢查是否捲曲啓用,是phpinfo()輸出...

2

嘗試確保allow_url_fopen在服務器上啓用。如果不是,打電話給fopen將失敗。

0

關於「可能的原因」的垃圾講座,而不是一個建議如何得到一個真實的原因。

ini_set('display_errors',1); 
error_reporting(E_ALL); 

位於腳本的頂部以查看發生了什麼問題。

+0

嗯..垃圾?是的,那會走得很遠。 ini_set()並不總是工作,順便說一句:) – 2010-03-16 05:39:42

+0

我不是在說「永遠」。我現在正在談論。在* this *的情況下,它會工作,因爲我們可以看到這段代碼沒有語法錯誤。 – 2010-03-16 05:49:56

+0

如果allow_url_fopen未啓用,那麼很有可能ini_set()會在disable_functions中列出。我無法看到OP如何指向phpinfo()和描述allow_url_fopen的文檔是垃圾? – 2010-03-16 07:08:43