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

上述编码在本地主机正常工作;;;在服务器编码问题

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

我不知道为什么....

有人请我解释...

我在等.. 。

感谢

回答

2

一个可能的原因可能是allow_url_fopen可能被禁用(引用)

此选项使URL感知 fopen封装协议使得可以访问如文件 URL对象。

您可以使用phpinfo()函数进行检查,看看它是否已启用。


如果未启用,则必须使用其他解决方案发送取回该远程内容的HTTP请求。

使用curl可能是一个解决方案,例如;一个快速的例子见curl_execcurl_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手册页:有一些经历了这么多的选择清单不是一个坏主意。


不过,作为预防措施,才去这样,你可能要检查是否卷曲启用,是phpinfo()输出...

2

尝试确保allow_url_fopen在服务器上启用。如果不是,打电话给fopen将失败。

0

关于“可能的原因”的垃圾讲座,而不是一个建议如何得到一个真实的原因。

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

位于脚本的顶部以查看发生了什么问题。

+0

嗯..垃圾?是的,那会走得很远。 ini_set()并不总是工作,顺便说一句:) – 2010-03-16 05:39:42

+0

我不是在说“永远”。我现在正在谈论。在* this *的情况下,它会工作,因为我们可以看到这段代码没有语法错误。 – 2010-03-16 05:49:56

+0

如果allow_url_fopen未启用,那么很有可能ini_set()会在disable_functions中列出。我无法看到OP如何指向phpinfo()和描述allow_url_fopen的文档是垃圾? – 2010-03-16 07:08:43