【发布时间】:2010-03-16 05:22:59
【问题描述】:
$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r")
or die("Error reading RSS data.");
上面的代码在 localhost;;;
但在服务器显示“读取 RSS 数据时出错。”...
我不知道为什么......
请大家解释一下...
我在等……
谢谢
【问题讨论】:
$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r")
or die("Error reading RSS data.");
上面的代码在 localhost;;;
但在服务器显示“读取 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 的手册页:有很多选项,浏览列表并不是一个坏主意。
不过,作为预防措施,在这样做之前,您可能需要检查 curl 是否启用,是 phpinfo() 的输出...
【讨论】:
尝试确保在服务器上启用了allow_url_fopen。如果不是,对 fopen 的调用将失败。
【讨论】:
很可能服务器配置了so that fopen() can not open a remote URL。您可能想尝试使用Simplepie 来解析提要,这样可以减轻痛苦。
【讨论】:
关于“可能的原因”的废话,而不是关于如何找到真正原因的建议。
ini_set('display_errors',1);
error_reporting(E_ALL);
在脚本顶部查看问题所在。
【讨论】: