Назад | Перейти на главную страницу

Не удается найти класс DOMDocument на PHP7 поверх Apache и Vagrant

Я запускаю локальное веб-приложение поверх Vagrant с Apache и PHP7.

Я пытался добавить сломанную зависимость разными способами, и пока у меня не получалось.

Пользуюсь scotchbox и пока решения от них не нашел.

Вот некоторые из шагов, которые я выполняю для решения других проблем:

sudo apt-get update --fix-missing
sudo composer self-update
sudo service apache2 restart
sudo apt-get install php7.0-soap
sudo service apache2 restart
composer install

Я получаю вот такую ​​ошибку:

An uncaught Exception was encountered

Type: Error

Message: Class 'DOMDocument' not found

Filename: /var/www/mytestsite.local/public/application/third_party/vendor/symfony/serializer/Encoder/XmlEncoder.php

Line Number: 88

Backtrace:

File: /var/www/mytestsite.local/public/application/third_party/vendor/symfony/serializer/Encoder/ChainDecoder.php
Line: 40
Function: decode

File: /var/www/mytestsite.local/public/application/third_party/vendor/symfony/serializer/Serializer.php
Line: 269
Function: decode

File: /var/www/mytestsite.local/public/application/third_party/vendor/googleads/googleads-php-lib/src/Google/AdsApi/AdWords/Reporting/v201609/ReportDownloader.php
Line: 149
Function: decode

File: /var/www/mytestsite.local/public/application/third_party/vendor/googleads/googleads-php-lib/src/Google/AdsApi/AdWords/Reporting/v201609/ReportDownloader.php
Line: 126
Function: makeReportRequest

File: /var/www/mytestsite.local/public/application/libraries/Googleads.php
Line: 231
Function: downloadReportWithAwql

File: /var/www/mytestsite.local/public/application/controllers/Mbt.php
Line: 691
Function: getCostByAdGrp

File: /var/www/mytestsite.local/public/index.php
Line: 316
Function: require_once

У меня была такая же проблема и со scotchbox, после установки Symfony с помощью их установщика и желания запустить демонстрационный проект. (запуск новой демо-версии Symfony на коробке через ssh).

Это ошибка, которую я получил:

Неперехваченная ошибка: класс 'DOMDocument' не найден в /var/www/public/demo/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:52 Трассировка стека: # 0

Я последовал совету Жана Поля Руиса, но у меня сложилось впечатление, что нужно переустановить еще больше, чтобы вернуть коробку на место. При запуске приложения в браузере мне представили белый экран.

Я смог решить проблему, когда прочитал этот пост на https://bugs.php.net/bug.php?id=74865

Запуск php -i или php -m на scotchbox тоже дал мне эти ошибки.

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/dom.so' - /usr/lib/php/20151012/dom.so: undefined symbol: php_libxml_node_free_list in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/xmlreader.so' - /usr/lib/php/20151012/xmlreader.so: undefined symbol: dom_node_class_entry in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/xsl.so' - /usr/lib/php/20151012/xsl.so: undefined symbol: dom_node_class_entry in Unknown on line 0

Как указано в сообщении выше, решением для меня было просто запустить apt-get update и apt-get upgrade на scotchbox ... после этого запустится приложение symfony. ТАДААА!

Ура Хенк

Итак, в конце концов, решение заключалось в том, чтобы удалить PHP с компьютера, переустановить его и добавить необходимые пакеты:

очистить php

sudo apt-get purge php.*
sudo service apache2 restart

sudo apt-get update

sudo apt-get install php
sudo service apache2 restart

начать установку всех пакетов php

sudo apt-get install php-mysql
sudo service apache2 restart

sudo apt-get install php-mbstring
sudo service apache2 restart

sudo apt-get install php-xml
sudo service apache2 restart

Надеюсь, это поможет любому, у кого такая же проблема.