Примечание: свойство Undefined: DOMDocument::$documentElement

Недавно я повторно открыл старый (1 год) проект Symfony, и у меня возникает ошибка на каждой странице (я не помню, чтобы эта проблема была год назад):

[exception] 500 | Internal Server Error | Symfony\Component\Config\Exception\FileLoaderLoadException
/var/www/[...]/wdt.xml

ContextErrorException: Notice: Undefined property: DOMDocument::$documentElement

Если я очищаю кеш, ошибка исчезает, но как только я редактирую и сохраняю файл, ошибка появляется снова. В проекте использовалась Symfony 2.8, и я обновился до Symfony 3.2, но это не решило проблему.

Я не думаю, что проблема связана с файлом wdt.xml, и я думаю, что это может быть связано с конфигурацией моего ноутбука.

Я действительно не знаю, с чего начать расследование, поэтому любое предложение приветствуется!

Редактировать 1:
На самом деле у меня такая же проблема с другим проектом, который я создал несколько дней назад. В проекте не используются дополнительные пакеты, и я просто создал 5 объектов и сгенерировал базу данных MySQL.

Изменить 2:
После дополнительных исследований я решил создать новую виртуальную машину Ubuntu и протестировать новый проект Symfony, и он просто отлично работает, поэтому это должно быть как-то связано с конфигурацией моего ноутбука. .

Редактировать 3:
После еще нескольких тестов, вот что я получаю, когда добавляю print_r($dom); в файле XmlUtils.php (vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php) строка 59:

Ubuntu VM (без ошибок):

DOMDocument Object ( [doctype] => [implementation] => (object value omitted) [documentElement] => (object value omitted) [actualEncoding] => [encoding] => [xmlEncoding] => [standalone] => 1 [xmlStandalone] => 1 [version] => 1.0 [xmlVersion] => 1.0 [strictErrorChecking] => 1 [documentURI] => /var/www/my_project/web/ [config] => [formatOutput] => [validateOnParse] => 1 [resolveExternals] => [preserveWhiteSpace] => 1 [recover] => [substituteEntities] => [nodeName] => #document [nodeValue] => [nodeType] => 9 [parentNode] => [childNodes] => (object value omitted) [firstChild] => (object value omitted) [lastChild] => (object value omitted) [previousSibling] => [attributes] => [ownerDocument] => [namespaceURI] => [prefix] => [localName] => [baseURI] => /var/www/my_project/web/ [textContent] => %kernel.charset% %kernel.default_locale% )

Ноутбук Ubuntu (ошибка):

DOMDocument Object ( [validateOnParse] => 1 [nodeName] => #document [nodeValue] => [nodeType] => 9 [parentNode] => [childNodes] => (object value omitted) [firstChild] => (object value omitted) [lastChild] => (object value omitted) [previousSibling] => [attributes] => [ownerDocument] => [namespaceURI] => [prefix] => [localName] => [baseURI] => /var/www/lab/symfony/booklib/web/ [textContent] => %kernel.charset% %kernel.default_locale% )

Похоже, на моем ноутбуке отсутствует какая-то информация...

По сути, функция $dom->loadXML не возвращает одно и то же значение в среде моего ноутбука и внутри виртуальной машины... есть идеи, почему?


person pjehan    schedule 14.03.2017    source источник


Ответы (9)


У меня установлена ​​Ubuntu 16.04 с php7.0.15, и я исправил ошибку, просто удалив расширение php-xdebug.

sudo apt-get purge php-xdebug

person Vasiliy    schedule 18.04.2017
comment
Перезапуск phpdismod xdebug && service php7.1-fpm и ошибка исчезли для меня. очень странно... - person errogaht; 22.06.2017
comment
очистка xdebug исправила это и для меня - person Julian Rubisch; 23.10.2017

Наконец-то я решил проблему, удалив/переустановив php7. Я понятия не имею, почему у меня возникла эта проблема, хотя...

person pjehan    schedule 15.03.2017

В моем случае ошибка была вызвана загрузкой расширения dom.so в двух местах. Удаление одного решило проблему.

person Tom Counsell    schedule 05.06.2018
comment
Спасибо, это решение было для меня лучшим - person Sylvain Rayé; 17.10.2018

Это может быть актуально: https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer

TLDR: используйте COMPOSER_ALLOW_XDEBUG=1, если вы используете xdebug с composer.

person Pablo    schedule 26.03.2020

Это очень странно, НО попробуйте изменить порядок загрузки расширений php в конфигурации php. Это решает мою проблему... переместите расширение dom выше или ниже в списке

person errogaht    schedule 02.05.2017
comment
Для меня сработало подобное решение - у меня было расширение дома в 2 местах. Я удалил его с одного, и тогда он начал работать. 2-й, вероятно, был проигнорирован, поэтому, скорее всего, проблема в порядке расширения. - person Mantas Karanauskas; 03.12.2017

Привет, я также встречаю эту проблему. Как я это решаю:

composer update

Надеюсь, это поможет кому-то.

person christian Nguyen    schedule 15.03.2017
comment
Привет, это не решило мою проблему, потому что это не связано с Symfony (я провел еще один тест вне Symfony, и у меня точно такая же ошибка). - person pjehan; 15.03.2017
comment
Да, это так. Я уже отлаживаю. Сначала я думал, что это XML-бинарная библиотека, но это не так. Когда я обновляюсь, и это исправляет мою проблему. - person christian Nguyen; 16.03.2017
comment
У меня была такая же проблема за пределами Symfony, но, возможно, ваша проблема была другой. Я попробовал решение для обновления композитора, но у меня это не сработало. - person pjehan; 16.03.2017
comment
Спасибо. Работает на меня. - person Dej; 22.04.2017

Спасибо, @pjehan. У меня была такая же проблема, и я потерял день. Наконец, ты мне понравился, и это удалось. Просто укажите одно: удалить PHP 7.0.x и установку PHP 7.1.3 (стабильная версия для PHP 7). Ссылка стабильной версии PHP 7: http://php.net/downloads.php Спасибо. так много, @pjehan, ты спас мне жизнь :D

person SanjiMika    schedule 16.03.2017
comment
Пожалуйста, я хотел бы найти точную проблему и другой способ, чем просто удалить и переустановить, но, потратив 6 часов на поиск решения, я просто сдался и выбрал самый простой способ решить эту проблему. Я рад, что это помогло вам подумать ???? - person pjehan; 16.03.2017

Я решил проблему, отключив xdebug для cli

person Matias Solis de la Torre    schedule 17.11.2017

В моем случае расширение dom было включено дважды. Однажды в dom.ini, а также в php.ini. Я удалил запись extension=dom.so из php.ini и перезагрузил веб-сервер apache2.

person Marvin Klar    schedule 21.08.2019