在同一服务器上使用file_get_contents或卷曲到url

问题描述:

我有一个PHP脚本需要处理同一站点的RSS源。具体来说,我在主页上显示WordPress RSS feed中的最新博客。在我们的登台服务器上它运行良好,但在我们的现场(这是一个完全不同的,但LAMP)托管环境,它不工作。在同一服务器上使用file_get_contents或卷曲到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

+0

是否有可能在/ etc/hosts中设置了www.bkwld.com或bkwld.com? – 2009-06-02 17:10:33

好吧,我仍然不知道为什么它会这样做,但我要解决它通过feedburner运行我的饲料,然后解析它的RSS源。因为它位于远程域中,所以它在我的测试中起作用。不理想,但有w/e。

我有一个非常类似的问题 - 你可以尝试使用127.0.0.1而不是你自己的域名(假设你的apache设置不会阻止你这样做)。与我认为的域名解析有关的事情,api的怪癖。

+3

如果该站点位于VirtualHost上,则会完全失败。 – grawity 2009-06-02 16:00:13

+0

是的,我很不幸。 – weotch 2009-06-02 16:24:58

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

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

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

我刚刚有这个类似的问题。 DNS是问题,它不是解决你的域名。您应该在脚本中使用IP而不是域。

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

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