Я только начал получать прерывистую ошибку на всех страницах Joomla Dev сайт, который я запускаю на localhost.
Полное предупреждение:
Warning: simplexml_load_file(): I/O warning : failed to load external entity "/site/language/en-GB/en-GB.xml" in /site/libraries/joomla/language/language.php on line 1354
Странная вещь заключается в том, что она прерывистая, и некоторые обновления обычно решают проблему.
Есть ли проблема с кодом, которая может вызвать это или это что-то еще?
Позвольте мне привести его здесь, на случай, если кто-то ответит Google, и решение с небезопасным libxml_disable_entity_loader(false)
не будет применимо. Ниже приведена потенциальная уязвимость включения загрузчика объектов в системе:
<!DOCTYPE scan [<!ENTITY test SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">]> <scan>&test;</scan>
Здесь объясняется проблема, связанная с отсутствием безопасности потока. Хотя можно зарегистрировать свой собственный загрузчик libxml_set_external_entity_loader
с помощью 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));
Надеюсь, это поможет кому-то.
Ранние дни еще не окончательно говорят о том, что это исправление работает, но, похоже, оно исправлено на данный момент.
EDIT: Я не видел повторения с момента внесения такого изменения, поэтому я могу подтвердить, что это решило проблему.
добавить libxml_disable_entity_loader(false);
пожаловать в joomla index.php
Кредит отправляется в Корнелиу на форум Joomla за сообщение в этой теме:
J! 3.1.6 / 3.2 simplexml_load_file, JForm :: getInstance errors