Клас "DOMDocument" не знайдено


209

Я знайшов помилку на сторінці в моєму додатку Magento; воно завжди показує цю помилку повідомлення, коли я відвідую його:

Фатальна помилка: клас "DOMDocument" не знайдено в /home/.../lib/Zend/Feed/Ab абстракт.php у рядку 95

Чи можете ви дати мені рішення? Я використовую magento 1.4.1.1.


1
Ця відповідь (увімкнути php-xml) здається узгодженою, чому сумніватися в цьому, а не просто тестувати? З кількох пошуків Google, здається, це одна з можливих проблем
koopajah

1
Мене просто лякає, коли я спробую "yum install php-xml", це порушить мій сайт magento ..
ws_123

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існує натомість пакет.


31
встановлення php-xml вирішило це для мене, але не забувайте про "перезапуск служби httpd"
zzapper

2
@zzapper спасибі, що мене на рейки! У моєму випадку мені потрібно було перезапустити apache2 service apache2 restart.
Shautieh

2
не забудьте після цього перезапустити
апаш

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

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

160

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
не забудьте після цього перезапустити
апаш

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

1
PHP 7.2, CentOS, yum install php72w-xmlа потім послуга перезапуску
Сілван

Чи немає 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

І перезапустив Apache з цією командою

sudo service httpd restart

3
Дякуємо, перезапуск сервера працював! Довелося робити service apache2 restartна ubuntu.
користувач3413723

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 з нуля.
деге

Покладаючись на параметр конфігурації - це найчастіше помилка, читайте 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 за замовчуванням) та PHP 5.6.1 як root, це допомогло:

zypper in php5-dom

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

systemctl restart apache2


1

Для Centos 7 та php 7.1:
встановіть перезапуск php71w-xml
apachectl


1

Якщо компілювати з джерела, --disable-allто підтримку DOMDocument можна активувати
--enable-dom

Приклад:

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

Тестували та працювали для Centos7 та PHP7


1

Я використовую CentOS 7 з virtualmin та трьома версіями PHP. У мене також увімкнено REMI repo. це працювало для мене:

Крок 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.