首先确认PHP的intl扩展未安装或未启用,通过命令php -m | grep intl检查;若无输出则需根据操作系统安装:Ubuntu/Debian执行sudo apt-get install php8.1-intl,CentOS/RHEL用sudo dnf install php-intl,macOS用brew install php@8.1-intl,Windows在php.ini中取消;extension=intl的注释;然后重启Web服务器或PHP-FPM;验证扩展是否启用成功,再运行Composer命令。若无法安装扩展,可使用composer require symfony/polyfill-intl-normalizer和symfony/polyfill-intl-idn作为替代方案;注意确保CLI与Web环境均启用intl,避免不一致问题。

这个错误是因为 PHP 的 intl 扩展没有安装或未启用。Composer 依赖的某些包(比如 symfony/polyfill-intl-normalizer、laravel 框架组件等)需要 intl 扩展来支持国际化功能,例如字符编码处理、区域设置等。
检查是否已安装 intl 扩展
运行以下命令查看已加载的扩展:php -m | grep intl
解决方法(根据操作系统选择)
Linux(Ubuntu/Debian)
安装 php-intl 包:sudo apt-get install php-intl
sudo apt-get install php8.1-intl
sudo systemctl restart apache2
sudo systemctl restart php8.1-fpm(如使用 FPM)
Linux(CentOS/RHEL/AlmaLinux)
使用 yum 或 dnf 安装:sudo yum install php-intl
sudo dnf install php-intl(较新版本)
macOS(使用 Homebrew)
如果你通过 brew 安装了 PHP:brew install php@8.1-intl
Windows
打开 php.ini 文件(通常位于 PHP 安装目录),找到这一行:;extension=intl
extension=intl
验证修复结果
再次运行:php -m | grep intl
intl。然后重新执行 composer 命令,错误应消失。
替代方案:使用 polyfill(无需安装扩展)
如果你无法安装 intl 扩展(如共享主机环境),可以添加 polyfill 来模拟其功能:composer require symfony/polyfill-intl-normalizer
composer require symfony/polyfill-intl-idn
基本上就这些。确保 PHP CLI 和 Web 运行环境都启用了 intl 扩展,避免出现“CLI 正常但网页报错”的情况。










