什么PHP /服务器设置可能会阻止simplexml_load_file()工作?

问题描述:

我使用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

启用错误报告。这应该告诉你什么是错的。 –

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

生产服务器可能会阻止传出的互联网请求,以防止滥用。另一个原因可能是它的一个不同的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

您必须设置allow_url_fopen option才能使其工作。