PHP 致命错误:未捕获错误:在 /usr/share/php/Symfony/Component/Console/Helper/Helper.php 中找不到类“Normalizer”

问题描述 投票:0回答:6

我正在尝试在从 git 克隆的 Laravel 项目中进行作曲家安装。

但是我遇到了一些错误。

我解决的第一个问题是:

- phpunit/phpunit[8.5.0, ..., 8.5.x-dev] require ext-dom * -> it is missing from your system. Install or enable PHP's dom extension.

通过这样做:

sudo apt install php7-4-xml php7.4-mbstring

但是现在当我做

composer update
composer install
时,我得到这个答案:

PHP Fatal error:  Uncaught Error: Class 'Normalizer' not found in /usr/share/php/Symfony/Component/Console/Helper/Helper.php:129
.

Stack trace:

#0 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(516): Symfony\Component\Console\Helper\Helper::strlenWithoutDecoration()
#1 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(576): Symfony\Component\Console\Helper\ProgressBar::Symfony\Component\Console\Helper\{closure}()
#2 [internal function]: Symfony\Component\Console\Helper\ProgressBar->Symfony\Component\Console\Helper\{closure}()
#3 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(589): preg_replace_callback()
#4 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(414): Symfony\Component\Console\Helper\ProgressBar->buildLine()
#5 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(323): Symfony\Component\Console\Helper\ProgressBar->display()
#6 /usr/share/php/Composer/Util/Loop.php(85): Symfony\Component\Console\Helper\ProgressBar->start()
#7 /usr/share/php/Compos in /usr/share/php/Symfony/Component/Console/Helper/Helper.php on line 129

Fatal error: Uncaught Error: Class 'Normalizer' not found in /usr/share/php/Symfony/Component/Console/Helper/Helper.php:129
Stack trace:
#0 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(516): Symfony\Component\Console\Helper\Helper::strlenWithoutDecoration()
#1 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(576): Symfony\Component\Console\Helper\ProgressBar::Symfony\Component\Console\Helper\{closure}()
#2 [internal function]: Symfony\Component\Console\Helper\ProgressBar->Symfony\Component\Console\Helper\{closure}()
#3 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(589): preg_replace_callback()
#4 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(414): Symfony\Component\Console\Helper\ProgressBar->buildLine()
#5 /usr/share/php/Symfony/Component/Console/Helper/ProgressBar.php(323): Symfony\Component\Console\Helper\ProgressBar->display()
#6 /usr/share/php/Composer/Util/Loop.php(85): Symfony\Component\Console\Helper\ProgressBar->start()
#7 /usr/share/php/Compos in /usr/share/php/Symfony/Component/Console/Helper/Helper.php on line 129
php laravel composer-php
6个回答
33
投票

需要安装php-intl

Normalizer 类附带 php 国际化扩展 (php-intl)。必须安装它才能使用 Normalizer 类

在 Debian 上我做到了

sudo apt install php-intl

应该可以解决问题


4
投票

首先你可以尝试安装 php-intl 包

sudo apt install php-intl

如果没有帮助,您可以一一运行以下命令将php版本升级到8.1。 (适用于基于 Debian 的操作系统):

sudo apt update
sudo apt upgrade
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt install php8.1 php8.1-cli php8.1-fpm php8.1-apcu php8.1-opcache php8.1-common php8.1-curl php8.1-zip php8.1-mcrypt php8.1-mysql php8.1-mbstring php8.1-xml php8.1-gd php8.1-imagick php8.1-xmlrpc php8.1-maxminddb
sudo update-alternatives --set php /usr/bin/php8.1

然后检查php版本:

php --version

这帮助我修复了错误。


1
投票

要解决这个问题,您需要安装较新版本的 php 8.1


0
投票

我遇到了这个问题,并设法通过卸载 Composer,然后从正确的存储库正确地重新安装 Composer 来解决它。我正在使用

sudo-apt get composer
,这就是问题所在。


0
投票

这可以通过直接从他们的网站安装 Composer 来解决。

删除随操作系统的包管理器安装的包,然后运行:

curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer


0
投票

我尝试了上述所有方法,但仍然看到相同的错误。任何帮助,解决我的问题 我的PHP版本是8.1.27 操作系统是ubuntu 22.04 Composer版本是2.2.6

© www.soinside.com 2019 - 2024. All rights reserved.