ไม่พบคลาส 'DOMDocument'


209

ฉันพบข้อผิดพลาดในหน้าหนึ่งในแอปพลิเคชั่น Magento ของฉัน มันจะแสดงข้อผิดพลาดข้อความนี้เสมอเมื่อฉันเยี่ยมชม:

ข้อผิดพลาดร้ายแรง: ไม่พบคลาส 'DOMDocument' ใน /home/.../lib/Zend/Feed/Abstract.php ที่บรรทัด 95

คุณช่วยแก้ปัญหาให้ฉันได้ไหม ฉันใช้ magento 1.4.1.1


1
คำตอบนี้ (เปิดใช้งาน php-xml) ดูเหมือนจะเชื่อมโยงกันทำไมจึงสงสัยแทนการทดสอบ จากการค้นหา google เล็กน้อยดูเหมือนว่าจะเป็นหนึ่งในปัญหาที่เป็นไปได้
koopajah

1
ฉันเพิ่งตกใจเมื่อฉันลอง "yum install php-xml" มันจะรบกวนเว็บไซต์ magento ของฉัน ..
ws_123

DomDocumentแทนที่จะDOMDocumentสามารถแก้ไขปัญหานี้ได้ในบางครั้ง
jirarium

คำตอบ:


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 แก้ไขปัญหานี้ให้ฉัน แต่อย่าลืม 'service httpd restart'
zzapper

2
@zzapper ขอบคุณที่ทำให้ฉันอยู่บนราง! ในกรณีของฉันฉันต้องการที่จะเริ่มต้นใหม่ service apache2 restartapache2
Shautieh

2
อย่าลืมรีสตาร์ท apache หลังจากนั้น
Jahmic

5
สำหรับ PHP7 php-docก็เพียง
Jared

9
สำหรับฉัน:sudo apt-get install php7.1-xml
Rafael Barros

160

PHP 7.0 :

  • อูบุนตู: apt-get install php7.0-xml
  • CentOS / Fedora / Red Hat: yum install php70w-xml

PHP 7.1 :

  • อูบุนตู: apt-get install php7.1-xml
  • CentOS / Fedora / Red Hat: yum install php71w-xml

PHP 7.2 :

  • อูบุนตู: apt-get install php7.2-xml
  • CentOS / Fedora / Red Hat: yum install php72w-xml

PHP 7.3 :

  • อูบุนตู: apt-get install php7.3-xml
  • CentOS / Fedora / Red Hat: yum install php73w-xml

PHP 7.4 :

  • อูบุนตู: 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) และนี่ใช้งานได้อย่างมีเสน่ห์! อย่าลืมที่จะ `เริ่มต้นนักเขียนประกอบด้วย '!
StephanieQ

1
PHP 7.2, CentOS yum install php72w-xmlจากนั้นรีสตาร์ทบริการ
Silvan

ไม่มีphp-xmlแพ็คเกจนามแฝง / แพ็กเกจเสมือนจริงหรือไม่?
binki

สิ่งนี้ยังเริ่มเกิดขึ้นกับการเปลี่ยนแปลง php7.3 ถึง 7.4 เมื่อเว็บเซิร์ฟเวอร์โมดูล PHP อ้างอิงตาม 7.3 และ php-xml คือ 7.4 การอัปเดตเป็นเวอร์ชัน PHP ที่สอดคล้องกัน (อย่างใดอย่างหนึ่ง) ทำงานได้ดี
Amos Jeffries

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
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 ในคำสั่งกำหนดค่าฉันควรทำอย่างไรต่อไป
ws_123

ขึ้นอยู่กับระบบของคุณ กรณีที่แย่ที่สุดคุณต้องคอมไพล์ PHP ใหม่ตั้งแต่ต้น
หลอกลวง

การใช้ตัวเลือกการกำหนดค่าส่วนใหญ่มักจะเป็นข้อผิดพลาดอ่านblog.remirepo.net/post/2010/09/29/phpinfo-BUG-or-PEBKACดังนั้นจึงถูกลบออกจากเอาต์พุต phpinfo ในความไม่พอใจ (debian, fedora ... )
Remi Collet

1
หากรวบรวมจากแหล่งที่มาคุณสามารถใช้--enable-dom
DidThis


1

การใช้ Suse Linux (Linux linux 3.16.7-48-default) และ PHP 5.6.1 เป็นรูทสิ่งนี้ช่วย:

zypper in php5-dom

บวกรีสตาร์ท

systemctl restart apache2



1

หากรวบรวมจากแหล่งที่มาด้วย--disable-allการสนับสนุน DOMDocument สามารถเปิดใช้งานด้วย
--enable-dom

ตัวอย่าง:

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

ผ่านการทดสอบและทำงานกับ Centos7 และ PHP7


1

ฉันใช้ CentOS 7 กับ virtualmin และ PHP สามเวอร์ชัน ฉันยังมีการเปิดใช้ repo 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 บางครั้งเพื่อให้เป็นไปตามข้อกำหนดของวีโอไอพี

ฉันคิดว่าคุณสามารถแทนที่รุ่น PHP เป็น 7.x ถ้าคุณใช้รุ่น PHP อื่น

และเริ่ม Apache ใหม่เพื่อโหลดส่วนขยายใหม่

sudo service apache2 restart

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.