PHP的SimpleXML未能在localhost(PHP Simplexml failing on

2019-10-17 11:00发布

我编辑我的混搭,我通过自己的API(XML)获取last.fm数据。

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

未能打开流:连接尝试失败,因为连接的方没有正确一段时间后响应或已建立的连接失败,因为连接的主机没有反应。 在C:\网络\阿帕奇\的Apache2 \ htdocs中\ soctfm \ user.php的线路35上

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

问题是,是,我的工作主要服务器上的罚款。 当我试图从我的本地获取XML失败。

allow_url_fopen是两个服务器。 所以它不是。 这可能是一个PHP版本错误。

在我的本地使用PHP 5.1.4。

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

我必须补充,我觉得可能是这个问题,我是从我的大学网络工作。 这意味着,我们必须通过代理到互联网连接。

你看,到了最后,一切都应该正常工作。 在XML和代码工作完美我的主服务器上,但管理不能在我的本地,我不知道为什么。

是否有更多的调试,我可以做什么? 难道是代理?

Answer 1:

这几乎可以肯定你的代理服务器。 如果您使用的卷曲 ,你可以将它设置要经过代理。



Answer 2:

如果像你说的,你是使用代理,您simplexml_load_file可能会失败:PHP将无法直接连接到远程服务器,将无法下载XML文件。

两种可能的解决方案:

  • 首先,取数据,用别的东西(如卷曲,configureg使用代理,看你可以使用的选项curl_setopt ); 只有到那时,使用simplexml_load_string
  • 或者,使用stream_context_create来配置使用代理服务器的流。
    • 关于这一点,你可以看到有我的回答 :这是你遇到了同样的问题
    • 虽然,你可能必须先获取XML数据,用file_get_contents ,并且,只有到那时,使用simplexml_load_string加载它, simplexml_load_file似乎并不接受流上下文参数:-(

第二个解决方案应该工作相当不错,我想; 并且不应该要求太多的工作:只是流上下文当你在本地主机上进行配置。
这意味着更少的工作,不必处理袅袅,我想;-)

玩得开心 !



文章来源: PHP Simplexml failing on localhost