Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是什么导致DOMDocument.load无法从可访问的URL加载XML?_Php_Xml_Dom - Fatal编程技术网

Php 是什么导致DOMDocument.load无法从可访问的URL加载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? } 添加以下内容

我可以从运行PHP代码的位置进行wget,因此我知道URL是可访问的。我想这肯定不是HTTP错误

我不确定还有什么可能导致失败。也许是解析问题?XML看起来是有效的,并且通过了W3C的验证测试。就我从中可以看出,没有办法确定负载故障发生的原因

以下是XML:

$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_转储会告诉我出了什么问题。所以,这让我无法加载外部实体;不像我希望的那样有描述性