什么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提要。同样,他们在本地工作,但在部署时返回空。
simplexml_load_file
需要allow_url_fopen
指令在php.ini
中启用,如果您要加载外部文件。卷曲函数不需要这个指令,所以它适用于你。
要理解为什么这样,考虑'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
选项
谢谢,但我已经尝试过了。没有输出。 – Sceletia
启用错误报告。这应该告诉你什么是错的。 –