【问题标题】:Symfony 2.8 project using PHP7 : Extension DOM is required使用 PHP7 的 Symfony 2.8 项目:需要扩展 DOM
【发布时间】:2020-07-01 18:03:28
【问题描述】:

我正在尝试在托管 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

但现在在我的服务器上只有“公共”页面有效,我的意思是当我访问需要 ORM 的页面时,它会返回 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(); 函数显示)显示 PHP 版本 7.2.28,它使用 /etc/php.ini文件。我想我必须使用一些 apache 配置进行调查。

【问题讨论】:

  • sudo apt-get install php7.2-xml?
  • 但是 PHP 7 上的 Symfony 2.8 呢?我认为您应该升级到 Symfony 4 或 5,并在必要时将您的代码更改为新的 Symfony 版本。

标签: php apache symfony centos7


【解决方案1】:

您应该检查扩展是否实际加载。 请记住,您的网络服务器使用的 PHP CLI 和 PHP 是两种不同的野兽,并且很可能具有不同的配置文件。 使用

在您的项目中创建一个简单的.php 页面
<?php phpinfo();

...在浏览器中导航到它并查看实际加载了哪些扩展。

按照您的发行版中的说明激活缺少的发行版。

【讨论】:

  • 你说得对,服务器上有2个PHP版本我不知道为什么>
  • 因此,只需为您的网络服务器使用的 PHP 版本安装缺少的模块。或者,嗯,卸载捆绑的 CentOS PHP 并安装完整的 Remi 的。
【解决方案2】:

所以实际上解决方案是:

1 将我的包版本与我的服务器使用的“好”版本的 PHP 重新链接(卸载并重新安装 php 7.2)

还有2种sudo yum install php-sql

这很奇怪,但这解决了我的问题。

【讨论】:

    猜你喜欢
    • 2016-08-31
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2022-10-06
    • 2013-04-01
    • 2016-11-10
    • 1970-01-01
    相关资源
    最近更新 更多