加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Intermittent simplexml_load_file():本地Joomla站点上

发布时间:2020-12-13 16:26:53 所属栏目:PHP教程 来源:网络整理
导读:我刚刚开始在我在localhost上运行的joomla开发站点的所有页面上出现间歇性错误. 完整的警告是: 警告:simplexml_load_file():I / O警告:无法在1354行的/site/libraries/joomla/language/language.php中加载外部实体“/site/language/en-GB/en-GB.xml” 奇
我刚刚开始在我在localhost上运行的joomla开发站点的所有页面上出现间歇性错误.

完整的警告是:

警告:simplexml_load_file():I / O警告:无法在1354行的/site/libraries/joomla/language/language.php中加载外部实体“/site/language/en-GB/en-GB.xml”

奇怪的是,它是间歇性的,一些刷新通常可以解决问题.

是否存在可能导致此问题的代码问题,还是其他问题?

让我把它放在这里以防万一有人会谷歌寻求答案,而不是线程安全的libxml_disable_entity_loader(false)的解决方案将不适用.在系统范围内启用实体加载程序的潜在漏洞如下所示:
<!DOCTYPE scan [<!ENTITY test SYSTEM 
      "php://filter/read=convert.base64-encode/resource=/etc/passwd">]>
<scan>&test;</scan>

here解释了缺少线程安全性引起的问题.虽然可以使用libxml_set_external_entity_loader注册自己的实体加载器,或者使用锁来保护对libxml_disable_entity_loader的调用,但这些解决方案看起来有点令人费解.

好消息是外部实体的问题只影响处理文件的功能(例如simplexml_load_file,DOMDocument::schemaValidate等).这使解决方案变得简单直接.首先将文件内容作为字符串加载,然后执行相应的libxml字符串导向功能.

simplexml_load_string(file_get_contents($xml));

和/或

$xml = new DOMDocument('1.0','UTF8');
$xml->loadXML(file_get_contents($xmlFile));
$xml->schemaValidateSource(file_get_contents($xsdFile));

希望它对某人有帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读