【问题标题】:Parsing Wordpress RSS with PHP: I/O warning : failed to load external entity使用 PHP 解析 Wordpress RSS:I/O 警告:无法加载外部实体
【发布时间】:2011-06-03 07:45:32
【问题描述】:

我正在尝试从 PHP 解析 wordpress RSS 提要。以下在我的本地服务器上运行良好,但不适用于我的站点实际所在的主机。


$url = "../blog/feed/"; $rss = simplexml_load_file($url);

foreach ($rss->channel->item as $item) { //做事
}

但是,在我的网站托管的服务器上,我收到错误“I/O 警告:加载外部实体失败”

不过,有趣的是,每当我手动将 RSS 文件保存为 xml 文件并指向该文件时,一切正常。因此,虽然我可以在每次发布后手动保存和上传 xml 文件,但我宁愿自动化它。

非常感谢您的宝贵时间。之后我可能会和主持人谈谈。

【问题讨论】:

    标签: xml wordpress simplexml php


    【解决方案1】:

    我假设../blog/feed/ 应该指向一个 URL(可能会被 mod_rewrite 重写)。

    如果您在脚本中使用相对路径,它们将被视为相对于脚本运行位置的物理(文件系统)路径,而不是相对于浏览器中调用的 URL。

    指定以 http:// 开头的完整 URL 应该会有所帮助。

    【讨论】:

    • 我会使用 http://,但有一个服务器配置我无权更改以防止这种情况发生。 “在服务器配置中禁用 URL 文件访问”。所以我猜它需要在某种程度上是相对的。奇怪的是,如果我手动将一个 xml 文件放在同一目录中并使用它,它就可以工作。所以 ../blog/rss.xml 有效。但我宁愿不必手动更新。
    • @Joseph 那么你必须找到正确的文件路径才能使用。如前所述,/blog/feed 是一个虚拟 URL,它不存在于文件系统级别。可能值得一个单独的问题来找出答案
    • @Joseph 还检查了这个答案是否有助于走不同的路线stackoverflow.com/questions/2055725/pull-data-from-wordpress/…
    猜你喜欢
    • 2014-06-22
    • 2021-08-28
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2019-09-12
    相关资源
    最近更新 更多