2012-12-05 33 views
1

我使用simplexml_load_file()抓住一個RSS提要的內容:什麼PHP /服務器設置可能會阻止simplexml_load_file()工作?

$rss = simplexml_load_file('http://www.iolproperty.co.za/roller/news/feed/entries/rss'); 

這工作我的本地服務器上的預期,但在部署到我的客戶的生產服務器,返回一個空的結果靜靜地失敗。

phpinfo()函數說明啓用了SimpleXML支持,並且似乎允許我訪問遠程文件(cURL函數工作正常)。我也嘗試加載不同的RSS提要。同樣,他們在本地工作,但在部署時返回空。

+0

啓用錯誤報告。這應該告訴你什麼是錯的。 –

回答

5

simplexml_load_file需要allow_url_fopen指令在php.ini中啓用,如果您要加載外部文件。捲曲函數不需要這個指令,所以它適用於你。

+0

要理解爲什麼這樣,考慮'simplexml_load_file($ url)'基本上與'simplexml_load_string(file_get_contents($ url))'相同,'file_get_contents($ url)'基本上是使用'fopen ($ url)'並讀出「文件」的內容。 ini設置允許您將URL作爲「fopen」的「文件」_和所有相關的函數_。 – IMSoP

1

生產服務器可能會阻止傳出的互聯網請求,以防止濫用。另一個原因可能是它的一個不同的PHP版本或一些mods不包含在配置中。使用錯誤報告看到錯誤消息

error_reporting(E_ALL); 

// UPDATE

你也可以檢查,如果你從服務器得到一個值回去就好

$c = implode('', file('http://www.iolproperty.co.za/roller/news/feed/entries/rss')); 
print $c; 
$rss = simplexml_load_string($c); 

檢查別人在說什麼,檢查是否啓用allow_url_fopen選項

+0

謝謝,但我已經嘗試過了。沒有輸出。 – Sceletia

相關問題