【问题标题】:Using file_get_contents or curl to url on same server使用 file_get_contents 或 curl 到同一服务器上的 url
【发布时间】:2009-06-02 15:23:49
【问题描述】:

我有一个 PHP 脚本需要处理同一个站点的 RSS 提要。具体来说,我在主页上显示来自 WordPress RSS 提要的最新博客。在我们的登台服务器上它运行良好,但在我们的现场(这是一个完全不同的,但 LAMP 的)托管环境中它不工作。

我可以在远程 URL 上运行 file_get_contentscurl 很好,但是当我尝试检索我们自己的 RSS 提要时,我返回了一个 404 未找到页面。另一个奇怪的是,如果我尝试file_get_contents(http://domain.com/test.txt),它会以 404 失败,但如果我这样做file_get_contents(http://www.domain.com/test.txt),我会得到测试文本文件的内容。这一切都假设我从 domain.com(不是 www.domain.com)运行脚本

我在这里设置了一个示例:http://bkwld.com/test.php

【问题讨论】:

  • 是否有可能在 /etc/hosts 中设置了 www.bkwld.com 或 bkwld.com?

标签: php rss curl file-get-contents


【解决方案1】:

好吧,我仍然不知道它到底为什么要这样做,但我将通过 feedburner 运行我的提要然后解析它的 RSS 提要来解决它。因为它在远程域上,所以它在我的测试中有效。不理想,但 w/e。

【讨论】:

    【解决方案2】:

    我刚刚遇到了类似的问题。 DNS是问题所在,它没有解析您的域名。您应该在脚本中使用 IP 而不是域。

    您可以在 cmd 中 ping 您的域并使用该 IP。

    【讨论】:

      【解决方案3】:

      我遇到了一个非常相似的问题 - 您可以尝试使用 127.0.0.1 而不是您自己的域名(假设您的 apache 设置不会阻止您这样做)。我相信与域解析有关,api 的怪癖。

      【讨论】:

      • 如果站点在虚拟主机上,这将完全失败。
      • 你知道你的虚拟主机被设置为 www.domain.com 和 domain.com 的别名吗?
      • 是的:ServerName bkwld.com:80 ServerAlias www.bkwld.com UseCanonicalName Off DocumentRoot /var/www/vhosts/bkwld.com/site/htdocs ...等
      【解决方案4】:

      确实,奇怪。你将如何解析文件?您可以直接将其加载到 SimpleXML 中;

      $xml = simplexml_load_file("http://domain.com/blog/feed/index.php");
      /* Use Simple XML to parse the RSS feed */
      

      我意识到这种方法并不能解决您的问题,您只能使用另一种方法 - 但也许对您来说已经足够了。

      【讨论】:

      • 是的,我之前使用的是 Zend Framework Zend_Feed_Rss(),但失败了。那是我试图通过使用 file_get_contents 和 CURL 来了解源代码
      【解决方案5】:

      如果 domain.com/test.txt 返回 404 并且 www.domain.com/test.txt 成功,则主机 DNS 可能具有不同配置的托管域。无论如何,我确定您已经尝试使用“www”检索 RSS 提要,但您是否尝试使用相对路径?例如:file_get_contents('../../feed/')

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 2011-09-15
        • 2014-06-23
        • 2017-08-20
        • 2012-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多