simplexml_load_file: 无法加载外部实体(调用本地路径)
simplexml_load_file: Unable to load external entity (called for local path)
我正在尝试使用 PHP 7.2 中的 simplexml_load_file
功能。我得到
Warning: simplexml_load_file(): I/O warning : failed to load external entity "../repositories/some.xml"
我用以下内容替换了对 simplexml_load_file
的调用:
$source = file_get_contents($path);
$xml = simplexml_load_string($source);
我现在工作得很好。 (注意 $path
是错误中列出的那个)
很遗憾,我没有任何其他信息,因为我不知道为什么会发生这种情况。问题的根源可能是什么?
我终于通过阅读问题找到了没人能找到的问题:mxgraph-php
使用 libxml_disable_entity_loader
而没有给出任何通知,这就是导致错误的原因。
对于那些使用 mxServer.php
, you can simply comment/remove the line if you trust the XML files (see vulnerability example 的人):
libxml_disable_entity_loader(true);
如果不能信任XML文件,可以使用simplexml_load_string
,以文件处理后的内容为参数。
注意 我没想到 mxgraph
是这个问题的根源,我在这上面花了几个小时,所以我希望它能帮助来自 Google 的人了解此警告文本。
我正在尝试使用 PHP 7.2 中的 simplexml_load_file
功能。我得到
Warning: simplexml_load_file(): I/O warning : failed to load external entity "../repositories/some.xml"
我用以下内容替换了对 simplexml_load_file
的调用:
$source = file_get_contents($path);
$xml = simplexml_load_string($source);
我现在工作得很好。 (注意 $path
是错误中列出的那个)
很遗憾,我没有任何其他信息,因为我不知道为什么会发生这种情况。问题的根源可能是什么?
我终于通过阅读问题找到了没人能找到的问题:mxgraph-php
使用 libxml_disable_entity_loader
而没有给出任何通知,这就是导致错误的原因。
对于那些使用 mxServer.php
, you can simply comment/remove the line if you trust the XML files (see vulnerability example 的人):
libxml_disable_entity_loader(true);
如果不能信任XML文件,可以使用simplexml_load_string
,以文件处理后的内容为参数。
注意 我没想到 mxgraph
是这个问题的根源,我在这上面花了几个小时,所以我希望它能帮助来自 Google 的人了解此警告文本。