【问题标题】:Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity警告:simplexml_load_file() [function.simplexml-load-file]:I/O 警告:加载外部实体失败
【发布时间】:2012-03-19 14:08:45
【问题描述】:

警告:simplexml_load_file() [function.simplexml-load-file]:I/O 警告:无法加载外部实体 "USD_en_productdata/USD_en_productdata.xml"

代码

$src=simplexml_load_file("USD_en_productdata/USD_en_productdata.xml");

foreach($src->ProductItem as $i){
}

【问题讨论】:

  • 你试过什么?文件是否存在?尝试使用绝对(非相对)文件路径。
  • 文件夹中的 xml 文件,所以我制作 USD_en_productdata/USD_en_productdata.xml
  • 错误信息真的没有任何帮助...它说它无法加载您指定的文件...检查路径/拼写/权限等
  • 哦,谢谢你的路径错误
  • 添加为第一个文件:var_dump(is_file("USD_en_productdata/USD_en_productdata.xml")); 结果可能是false。我建议使用绝对路径。喜欢dirname(__FILE__)."/USD_en_productdata/USD_en_productdata.xml"

标签: php


【解决方案1】:

如果您尝试加载保存在服务器上的 xml,请尝试传递完整的目录路径

simplexml_load_file($_SERVER['DOCUMENT_ROOT'].'/uproYourFoldet/USD_en_productdat/USD_en_productdata.xml')

或者如果你想通过 http 协议访问 xml,你需要在 php.ini 或

中设置 allow_url_fopen ON
ini_set('allow_url_fopen ','ON');

在您的代码中。或者,如果您使用的是 php 版本 ,也可以这样做

$temp = file_get_contents($url);
 $XmlObj = simplexml_load_string($temp); 

【讨论】:

    【解决方案2】:

    看起来您的路径可能不正确。

    根据我的经验,最好将 simplexml_load_file 和后续函数用 if 语句与 file_exists(...) 作为条件。

    所以在你的情况下:

    if(file_exists($_SERVER['DOCUMENT_ROOT'].'/yourPathToFile/...')) {
    simplexml_load_file($_SERVER['DOCUMENT_ROOT'].'/urltoYourFolder/USD_en_productdat/USD_en_productdata.xml')
    }
    

    编辑:拼写

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 2012-08-28
      • 2017-10-20
      • 1970-01-01
      • 2015-03-22
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多