在 Apache 和 Vagrant 上的 PHP7 上找不到 DOMDocument 类

在 Apache 和 Vagrant 上的 PHP7 上找不到 DOMDocument 类

我正在使用 Apache 和 PHP7 在 Vagrant 上运行本地 Web 应用程序。

我一直尝试通过多种方式添加损坏的依赖关系,但到目前为止还没有成功。

我正在使用 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

答案1

在使用 scotchbox 的安装程序安装 symfony 并想要运行演示项目后,我也遇到了同样的问题。(通过 ssh 在盒子上运行 symfony 新演示)。

这是我收到的错误:

未捕获错误:未在 /var/www/public/demo/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:52 中找到类“DOMDocument”堆栈跟踪:#0

我听从了 Jean Paul Ruiz 的建议,但我觉得需要重新安装更多东西才能让盒子回到原来的位置。在浏览器中运行应用程序时,我看到了一个白屏。

当我读到这篇文章时,我就能解决这个问题了https://bugs.php.net/bug.php?id=74865

在 scotchbox 上运行 php -i 或 php -m 也出现了这些错误。

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 更新apt-get 升级在 Scotchbox 上...之后 symfony 应用程序就会运行。TaDAAA!

干杯,亨克

答案2

好的,最后,解决方案是从机器中清除 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

希望这能帮助遇到同样问题的人。

相关内容