使用 PHP7 的 Symfony 2.8 项目:需要扩展名 DOM
Symfony 2.8 project using PHP7 : Extension DOM is required
我正在尝试在托管 symfony 项目的服务器上从 php 5 升级到 7。
实际上,从 php 5 到 7 的更新有效;
php --version
PHP 7.2.29 (cli) (built: Mar 17 2020 11:58:47) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.29, Copyright (c) 1999-2018, by Zend Technologies
但现在在我的服务器上只有 "public" 个页面有效,我的意思是当我进入一个需要 ORM 的页面时 returns 出现 500 内部错误。
日志服务器文件给我这个输出:
[2020-03-20 14:38:49] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Validator\Exception\MappingException: "Extension DOM is required." at /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/Loader/XmlFileLoader.php line 179 {"exception":"[object] (Symfony\Component\Validator\Exception\MappingException(code: 0): Extension DOM is required. at /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/Loader/XmlFileLoader.php:179, RuntimeException(code: 0): Extension DOM is required. at /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:45)"} []
[2020-03-20 14:38:50] security.INFO: No expression found; abstaining from voting. [] []
[2020-03-20 14:38:50] security.INFO: No expression found; abstaining from voting. [] []
所以我用谷歌搜索了这个错误,然后我就这样做了:
sudo yum install php72-php-mbstring php72-php-xml php72-php-xmlrpc
然后:
php -d memory_limit=-1 composer.phar update --no-cache
php -d memory_limit=-1 app/console cache:clear --env=prod
sudo systemctl restart httpd.service
我仍然遇到这个错误...
编辑:
cli 版本是 PHP 7.2.29,它使用 /etc/opt/remi/php72/php.ini 文件和服务器 PHP(由 phpinfo(); 函数显示)show PHP使用 /etc/php.ini 文件的 7.2.28 版。我想我必须调查一些 apache 配置。
您应该检查是否确实加载了扩展程序。
请记住,您的网络服务器使用的 PHP CLI 和 PHP 是两种不同的野兽,很可能具有不同的配置文件。
使用
在您的项目中创建一个简单的 .php
页面
<?php phpinfo();
...在您的浏览器中导航到它并查看实际加载了哪些扩展。
按照您的发行版中的说明激活丢失的发行版。
所以实际上解决方案是:
1 重新link 我的包版本与我的服务器使用的 PHP 'good' 版本(卸载并重新安装 php 7.2)
和 2 类型 sudo yum install php-sql
这很奇怪,但这解决了我的问题。
我正在尝试在托管 symfony 项目的服务器上从 php 5 升级到 7。 实际上,从 php 5 到 7 的更新有效;
php --version
PHP 7.2.29 (cli) (built: Mar 17 2020 11:58:47) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.29, Copyright (c) 1999-2018, by Zend Technologies
但现在在我的服务器上只有 "public" 个页面有效,我的意思是当我进入一个需要 ORM 的页面时 returns 出现 500 内部错误。 日志服务器文件给我这个输出:
[2020-03-20 14:38:49] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Validator\Exception\MappingException: "Extension DOM is required." at /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/Loader/XmlFileLoader.php line 179 {"exception":"[object] (Symfony\Component\Validator\Exception\MappingException(code: 0): Extension DOM is required. at /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/Loader/XmlFileLoader.php:179, RuntimeException(code: 0): Extension DOM is required. at /var/www/myProject/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:45)"} []
[2020-03-20 14:38:50] security.INFO: No expression found; abstaining from voting. [] []
[2020-03-20 14:38:50] security.INFO: No expression found; abstaining from voting. [] []
所以我用谷歌搜索了这个错误,然后我就这样做了:
sudo yum install php72-php-mbstring php72-php-xml php72-php-xmlrpc
然后:
php -d memory_limit=-1 composer.phar update --no-cache
php -d memory_limit=-1 app/console cache:clear --env=prod
sudo systemctl restart httpd.service
我仍然遇到这个错误...
编辑: cli 版本是 PHP 7.2.29,它使用 /etc/opt/remi/php72/php.ini 文件和服务器 PHP(由 phpinfo(); 函数显示)show PHP使用 /etc/php.ini 文件的 7.2.28 版。我想我必须调查一些 apache 配置。
您应该检查是否确实加载了扩展程序。 请记住,您的网络服务器使用的 PHP CLI 和 PHP 是两种不同的野兽,很可能具有不同的配置文件。 使用
在您的项目中创建一个简单的.php
页面
<?php phpinfo();
...在您的浏览器中导航到它并查看实际加载了哪些扩展。
按照您的发行版中的说明激活丢失的发行版。
所以实际上解决方案是:
1 重新link 我的包版本与我的服务器使用的 PHP 'good' 版本(卸载并重新安装 php 7.2)
和 2 类型 sudo yum install php-sql
这很奇怪,但这解决了我的问题。