服务器中的编码问题

时间:2010-03-16 05:23:00

标签: php localhost

$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r")
    or die("Error reading RSS data.");

以上编码在localhost中正常工作;;;

但在服务器显示中“读取RSS数据时出错。”......

我不知道为什么......

任何人请解释我......

我在等......

感谢

4 个答案:

答案 0 :(得分:2)

可能的原因可能是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中Feed的内容 - 但请查看curl_setopt的手册页:有很多选项可以通过列表不是一个坏主意。


不过,作为预防措施,在采用这种方式之前,您可能需要检查是否启用了curl,是phpinfo()的输出...

答案 1 :(得分:2)

尝试确保在服务器上启用allow_url_fopen。如果不是,则对fopen的调用将失败。

答案 2 :(得分:0)

很可能服务器已配置so that fopen() can not open a remote URL。您可能希望尝试使用Simplepie来解析Feed,但它会消除它的痛苦。

答案 3 :(得分:0)

垃圾谈论“可能的原因”而不是一个单一的建议如何得到一个真正的理由。

ini_set('display_errors',1);
error_reporting(E_ALL);

在脚本的顶部,看看出了什么问题。