我正在编辑我的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上设法失败,我不知道为什么。
我可以做更多的调试吗?它可能是代理吗?
答案 0 :(得分:3)
几乎可以肯定是你的代理服务器。 如果您使用curl,则可以将其设置为通过代理。
答案 1 :(得分:3)
如果像你说的那样,你在代理之后,你的simplexml_load_file
可能会失败:PHP将无法直接连接到远程服务器,也无法下载XML文件。
两种可能的解决方案:
curl_setopt
一起使用的选项);然后,使用simplexml_load_string
。stream_context_create
配置使用代理的流。
file_get_contents
获取XML数据,然后才使用simplexml_load_string
加载它,因为simplexml_load_file
似乎不是接受流上下文作为参数: - (我认为第二种解决方案应该很好用;并且不需要太多工作:只需要在localhost上配置流上下文。 我认为,这意味着减少工作量而不是处理卷曲; - )
玩得开心!