Php 是什么导致DOMDocument.load无法从可访问的URL加载XML?
我可以从运行PHP代码的位置进行wget,因此我知道URL是可访问的。我想这肯定不是HTTP错误 我不确定还有什么可能导致失败。也许是解析问题?XML看起来是有效的,并且通过了W3C的验证测试。就我从中可以看出,没有办法确定负载故障发生的原因 以下是XML:Php 是什么导致DOMDocument.load无法从可访问的URL加载XML?,php,xml,dom,Php,Xml,Dom,我可以从运行PHP代码的位置进行wget,因此我知道URL是可访问的。我想这肯定不是HTTP错误 我不确定还有什么可能导致失败。也许是解析问题?XML看起来是有效的,并且通过了W3C的验证测试。就我从中可以看出,没有办法确定负载故障发生的原因 以下是XML: $doc = new DOMDocument(); if ($doc->load('http://foo.com/bar.xml')) { // good } else { // wtf happened? } 添加以下内容
$doc = new DOMDocument();
if ($doc->load('http://foo.com/bar.xml')) {
// good
} else {
// wtf happened?
}
添加以下内容:
<response>
<version>8</version>
<minversion>1</minversion>
<url>api.asp?</url>
</response>
添加以下内容:
<response>
<version>8</version>
<minversion>1</minversion>
<url>api.asp?</url>
</response>
最后,我将其缩小为一个名为allow_url_fopen的文件,在运行脚本的服务器上设置为Off 我修改了php.ini文件以启用此设置:
libxml_use_internal_errors ( true );
$doc = new DOMDocument();
$doc -> recover = true;
$doc -> strictErrorChecking = false;
现在DOMDocument.load可以从远程URL加载XML
警告:显然有一些方法可以永久打开此设置。我最终将其缩小为一个名为allow\u url\u fopen的选项,该选项在运行脚本的服务器上设置为Off 我修改了php.ini文件以启用此设置:
libxml_use_internal_errors ( true );
$doc = new DOMDocument();
$doc -> recover = true;
$doc -> strictErrorChecking = false;
现在DOMDocument.load可以从远程URL加载XML
警告:显然有一些方法可以永久打开此设置。这对我有什么用?我不是一个PHP的家伙,这是一个一次性的事情,我正在工作它只是抑制错误,并允许您的代码继续在失败的情况下。要检查确切的问题是什么,请附加以下内容:var_dump libxml_get_errors;哦,谢谢!我的代码会继续,它会命中else子句,但我需要知道原因。希望var_转储会告诉我出了什么问题。所以,这让我无法加载外部实体;不像我希望的那样有描述性这对我有什么用?我不是一个PHP的家伙,这是一个一次性的事情,我正在工作它只是抑制错误,并允许您的代码继续在失败的情况下。要检查确切的问题是什么,请附加以下内容:var_dump libxml_get_errors;哦,谢谢!我的代码会继续,它会命中else子句,但我需要知道原因。希望var_转储会告诉我出了什么问题。所以,这让我无法加载外部实体;不像我希望的那样有描述性