Класс 'DOMDocument' не найден


210

Я нашел ошибку на странице в моем приложении Magento; это всегда показывает эту ошибку сообщения, когда я посещаю это:

Неустранимая ошибка: класс 'DOMDocument' не найден в /home/.../lib/Zend/Feed/Abstract.php в строке 95

Можете ли вы дать мне решение? Я использую magento 1.4.1.1.


1
Этот ответ (включить php-xml) кажется логичным, зачем сомневаться в этом, а не просто проверять?
Судя

1
я просто пугаюсь, когда пытаюсь "yum install php-xml", это
мешает

DomDocumentвместо этого DOMDocumentиногда можно решить эту проблему.
Хирариум

Ответы:


300

Вам необходимо установить расширение DOM . Вы можете сделать это в Debian / Ubuntu, используя:

sudo apt-get install php-dom

И на Centos / Fedora / Red Hat:

yum install php-xml

Если у вас возникают конфликты между пакетами PHP 5 и PHP 5.3, вы можете попробовать проверить php53-xml, существует ли пакет.


32
установка php-xml решила это для меня, но не забывайте «перезапуск службы httpd»
zzapper

2
@zzapper спасибо, что получил меня на рельсах! В моем случае мне нужно было перезагрузить apache2 service apache2 restart.
Shautieh

2
не забудьте перезапустить Apache впоследствии
Jahmic

5
Для PHP7 это просто php-doc.
Джаред

10
Для меня:sudo apt-get install php7.1-xml
Рафаэль Баррос

161

PHP 7.0 :

  • Ubuntu: apt-get install php7.0-xml
  • CentOS / Fedora / Red Hat: yum install php70w-xml

PHP 7.1 :

  • Ubuntu: apt-get install php7.1-xml
  • CentOS / Fedora / Red Hat: yum install php71w-xml

PHP 7.2 :

  • Ubuntu: apt-get install php7.2-xml
  • CentOS / Fedora / Red Hat: yum install php72w-xml

PHP 7.3 :

  • Ubuntu: apt-get install php7.3-xml
  • CentOS / Fedora / Red Hat: yum install php73w-xml

PHP 7.4 :

  • Ubuntu: apt-get install php7.4-xml
  • CentOS / Fedora / Red Hat: yum install php74w-xml

10
не забудьте перезапустить Apache впоследствии
Jahmic

Я запускаю PHP 7 (7.0.15-1 ~ dotdeb + 8.1) на Nginx VS (через Docker), и это работает как шарм! Не забудьте выполнить перезагрузку docker-compose!
StephanieQ

1
PHP 7.2, CentOS, yum install php72w-xmlа затем перезапустите службу
Silvan

Разве нет php-xmlпсевдонима / виртуального пакета?
Бинки

Это также начинает происходить с php7.3 до 7.4 перехода. Когда модуль PHP веб-сервера основан на 7.3, а php-xml - 7.4. Обновление до согласованной версии PHP (любой) работает нормально.
Амос Джеффрис

26

PHP7: последняя версия:

sudo apt-get install php7.1-xml

Вы также можете сделать:

sudo apt-get install php-dom

и apt-get покажет вам, где это


6

Я использую Centos, и у меня работает следующее, я запускаю эту команду

yum --enablerepo remi install php-xml

И перезапустил апач этой командой

sudo service httpd restart

3
Спасибо, перезагрузка сервера сработала! Я должен был сделать service apache2 restartна Ubuntu.
user3413723

6
Package php-dom is a virtual package provided by:
  php7.1-xml 7.1.3+-3+deb.sury.org~xenial+1
  php7.0-xml 7.0.17-3+deb.sury.org~xenial+1
  php5.6-xml 5.6.30-9+deb.sury.org~xenial+1
You should explicitly select one to install.

В случае, если кто-то использует версии 5.6, тогда идите по этому пути

sudo apt-get install php5.6-xml

Для Php Ver PHP7, Ubuntu:

sudo apt-get install php7.1-xml

или

yum install php-xml

4

Создайте пустой PHP-файл и поместите только <?php phpinfo();в него, посмотрите на него в браузере.
Проверьте, можете ли вы найти--disable-dom параметры конфигурации и / или увидеть ли вы подробности о расширении DOM в списке ниже.

Если вы не видите DOM в списке или видите, что он отключен, ваша установка PHP не включает расширение DOM. Вам нужно будет перекомпилировать вашу установку PHP из исходного кода, чтобы исправить это.


я нашел --disable-dom в Configure Command, что мне делать дальше?
ws_123

Это зависит от вашей системы. В худшем случае вам придется перекомпилировать PHP с нуля.
deceze

Использование параметра конфигурации чаще всего является ошибкой, прочитайте blog.remirepo.net/post/2010/09/29/phpinfo-BUG-or-PEBKAC, чтобы он был удален из вывода phpinfo в некоторых дистрибутивах (debian, fedora ... )
Реми Коллет

1
Если скомпилировано из исходного кода, вы можете использовать--enable-dom
DidThis


1

Используя Suse Linux (Linux linux 3.16.7-48-default) и PHP 5.6.1 в качестве пользователя root, это помогло:

zypper in php5-dom

плюс перезапуск

systemctl restart apache2


1

Для Centos 7 и php 7.1:
yum установите php71w-xml
apachectl restart


1

При компиляции из источника с --disable-allподдержкой DOMDocument можно включить
--enable-dom

Пример:

./configure --disable-all --enable-dom

Протестировано и работает на Centos7 и PHP7


1

Я использую CentOS 7 с virtualmin и тремя версиями PHP. У меня также включен репо REMI. у меня это сработало

Шаг 1:

Просто добавьте номер основной версии PHP следующим образом php{version number}-xml. И бегиyum install

yum install php70-php-xml
yum install php71-php-xml
yum install php72-php-xml

Шаг 2:

Не забудьте перезапустить Apache:

service httpd restart

0

Если вы используете PHP7.0 для установки Magento, я предлагаю установить все расширения этой командой

sudo apt-get install php7.0 php7.0-xml php7.0-mcrypt php7.0-curl php7.0-cli php7.0-mysql php7.0-gd libapache2-mod-php7.0 php7.0-intl php7.0-soap php7.0-zip php7.0-bcmath

Мне нужно Google несколько раз, чтобы удовлетворить требования Magento.

Я думаю, что вы можете заменить версию PHP на 7.x, если вы используете другую версию PHP

И перезагрузка Apache необходима для загрузки новых расширений

sudo service apache2 restart

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.