1

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

由于某种原因,我的本地主机无法连接到该文件:它给出了以下错误。

failed to open stream:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。在第 35 行的 C:\Web\Apache\Apache2\htdocs\soctfm\user.php

I/O 警告:未能加载外部实体

问题是,它在我的主服务器上运行良好。当我尝试从本地主机获取 xml 时,它失败了。

allow_url_fopen两台服务器都打开。所以不是这样的。可能是 PHP 版本错误。

在我的本地主机上使用 PHP 5.1.4。

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

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

你看,最后,一切都应该正常工作。XML 和代码在我的主服务器上运行良好,但在我的本地主机上却失败了,我不知道为什么。

我还能做更多的调试吗?会不会是代理?

4

2 回答 2

3

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

于 2009-09-02T10:11:05.450 回答
3

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

两种可能的解决方案:

  • 首先,使用其他方法获取数据(例如 curl,配置为使用代理;查看您可以使用的选项curl_setopt;只有这样,使用simplexml_load_string.
  • 或者,用于stream_context_create配置使用代理的流。
    • 关于这一点,你可以在那里看到我的答案:这是你遇到的同样的问题
    • 不过,您可能必须先使用 获取 XML 数据,file_get_contents然后才使用simplexml_load_string它来加载它,因为simplexml_load_file似乎不接受流上下文作为参数:-(

我想第二个解决方案应该很好用;并且不需要太多工作:只需在本地主机上配置一个流上下文即可。
我想这意味着比处理 curl 更少的工作;-)

玩得开心 !

于 2009-09-02T10:13:27.177 回答