$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r")
or die("Error reading RSS data.");
上述编码在本地主机正常工作;;;在服务器编码问题
但在服务器显示 “错误读取RSS数据。” ......
我不知道为什么....
有人请我解释...
我在等.. 。
感谢
$fp = fopen("http://feeds.reuters.com/Reuters/PoliticsNews?format=xml","r")
or die("Error reading RSS data.");
上述编码在本地主机正常工作;;;在服务器编码问题
但在服务器显示 “错误读取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
手册页:有一些经历了这么多的选择清单不是一个坏主意。
不过,作为预防措施,才去这样,你可能要检查是否卷曲启用,是phpinfo()
输出...
它极有可能是服务器配置so that fopen() can not open a remote URL。您可能想要尝试使用Simplepie来解析订阅源,但它会消除它的痛苦。
尝试确保allow_url_fopen
在服务器上启用。如果不是,打电话给fopen将失败。
关于“可能的原因”的垃圾讲座,而不是一个建议如何得到一个真实的原因。
ini_set('display_errors',1);
error_reporting(E_ALL);
位于脚本的顶部以查看发生了什么问题。
嗯..垃圾?是的,那会走得很远。 ini_set()并不总是工作,顺便说一句:) – 2010-03-16 05:39:42
我不是在说“永远”。我现在正在谈论。在* this *的情况下,它会工作,因为我们可以看到这段代码没有语法错误。 – 2010-03-16 05:49:56
如果allow_url_fopen未启用,那么很有可能ini_set()会在disable_functions中列出。我无法看到OP如何指向phpinfo()和描述allow_url_fopen的文档是垃圾? – 2010-03-16 07:08:43