PHP Simplexml在localhost上失败

时间:2009-09-02 10:05:59

标签: php localhost simplexml

我正在编辑我的mashup,我通过他们的API(xml)获取last.fm数据。

由于某种原因,我的localhost无法连接到该文件:它出现以下错误。

  

无法打开流:连接   尝试失败,因为连接   一方没有正确回应   一段时间,或已建立   连接失败,因为连接   主持人没有回复。在   C:\网络\ Apache的\的Apache2 \ htdocs中\ soctfm \ user.php的   第35行

  

I / O警告:无法加载外部   实体

问题是,它在我的主服务器上工作正常。当我尝试从本地主机获取xml时,它失败了。

两台服务器都已启用

allow_url_fopen。所以不是这样。它可能是PHP版本错误。

在我的localhost上使用PHP 5.1.4。

在我的主服务器上使用PHP 5.2.5。

我必须补充一下,我认为可能是问题,我正在大学互联网上工作。这意味着,我们必须通过代理连接到互联网。

你看,最终,一切都应该运转正常。 XML和代码在我的主服务器上完美运行,但在我的localhost上设法失败,我不知道为什么。

我可以做更多的调试吗?它可能是代理吗?

2 个答案:

答案 0 :(得分:3)

几乎可以肯定是你的代理服务器。 如果您使用curl,则可以将其设置为通过代理。

答案 1 :(得分:3)

如果像你说的那样,你在代理之后,你的simplexml_load_file可能会失败:PHP将无法直接连接到远程服务器,也无法下载XML文件。

两种可能的解决方案:

  • 首先,使用获取数据(如curl,configureg以使用代理;请参阅可与curl_setopt一起使用的选项);然后,使用simplexml_load_string
  • 或者,使用stream_context_create配置使用代理的流。
    • 关于这一点,您可以看到my answer there:这是您遇到的同样问题
    • 但是,您可能必须首先使用file_get_contents获取XML数据,然后才使用simplexml_load_string加载它,因为simplexml_load_file似乎不是接受流上下文作为参数: - (

我认为第二种解决方案应该很好用;并且不需要太多工作:只需要在localhost上配置流上下文。 我认为,这意味着减少工作量而不是处理卷曲; - )

玩得开心!