$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r")
or die("Error reading RSS data.");
上述編碼在本地主機正常工作;;;在服務器編碼問題
但在服務器顯示 「錯誤讀取RSS數據。」 ......
我不知道爲什麼....
有人請我解釋...
我在等.. 。
感謝
$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r")
or die("Error reading RSS data.");
上述編碼在本地主機正常工作;;;在服務器編碼問題
但在服務器顯示 「錯誤讀取RSS數據。」 ......
我不知道爲什麼....
有人請我解釋...
我在等.. 。
感謝
一個可能的原因可能是allow_url_fopen
可能被禁用(引用):
此選項使URL感知 fopen封裝協議使得可以訪問如文件 URL對象。
您可以使用phpinfo()
函數進行檢查,看看它是否已啓用。
如果未啓用,則必須使用其他解決方案發送取回該遠程內容的HTTP請求。
使用curl可能是一個解決方案,例如;一個快速的例子見curl_exec
,curl_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()
輸出...
它極有可能是服務器配置so that fopen() can not open a remote URL。您可能想要嘗試使用Simplepie來解析訂閱源,但它會消除它的痛苦。
嘗試確保allow_url_fopen
在服務器上啓用。如果不是,打電話給fopen將失敗。
關於「可能的原因」的垃圾講座,而不是一個建議如何得到一個真實的原因。
ini_set('display_errors',1);
error_reporting(E_ALL);
位於腳本的頂部以查看發生了什麼問題。
嗯..垃圾?是的,那會走得很遠。 ini_set()並不總是工作,順便說一句:) – 2010-03-16 05:39:42
我不是在說「永遠」。我現在正在談論。在* this *的情況下,它會工作,因爲我們可以看到這段代碼沒有語法錯誤。 – 2010-03-16 05:49:56
如果allow_url_fopen未啓用,那麼很有可能ini_set()會在disable_functions中列出。我無法看到OP如何指向phpinfo()和描述allow_url_fopen的文檔是垃圾? – 2010-03-16 07:08:43