我阅读了关于这个错误的所有内容,但无法找到任何解决方案。
我有一个简单的页面,看起来像这样:$xmlfile = "/var/www/marees.xml"; //Fichier dans lequel récupérer les données
$ent = new DOMDocument();
$ent->load($xmlfile);
if(!(@$ent->load($xmlfile)))
{
echo "Unable to load : " . $xmlfile;
exit();
}
我得到了四次中的三次,随机这个错误:
PHP: DOMDocument::load(): I/O警告:在/var/www/marees/test2. PHP第7行加载外部实体"/var/www/marees.xml"失败
当我重新启动Apache时,脚本正常工作了5分钟,然后错误开始出现。
XML文件重595 kB,存在且可读。
可能是什么问题?
将此命令添加到脚本顶部:
libxml_disable_entity_loader(false);
public mixed DOMDocument::load ( string $filename [, int $options = 0 ] )
函数声明带有一个名为$options
的可选形参,其中
选项>
libxml选项常量的按位或。
LIBXML_NOWARNING
常数的使用为我解决了这个问题:
$ent->load($xmlfile, LIBXML_NOWARNING);
在我的例子中,我正在复制XML根目录中的一些文件。这个进程递归地改变了根目录的权限。所以我只是在复制文件后使用下面的代码更改权限,它工作。
mkdir($rootDirectoryAddress, 0777, true);