需启用PHP intl扩展:Linux用sudo apt install php-intl,Windows取消php.ini中extension=intl注释并复制icu*.dll到系统路径,最后用php --ri intl验证ICU版本。

Composer报错“requires ext-intl *”怎么办
这是 Composer 安装或更新时最常遇到的依赖拦截问题,本质不是 Composer 本身出错,而是当前 PHP 环境缺少 intl 扩展。该扩展被 Laravel、Symfony、Magento 等主流框架的许多包(如 symfony/polyfill-intl-* 的上游依赖)明确要求,跳过会直接中断安装。
确认 intl 是否真的未启用
别急着重装 PHP,先验证现状。运行以下命令:
php -m | grep intl
如果无输出,说明扩展未加载;若返回 intl,但 Composer 仍报错,可能是 CLI 和 Web 使用了不同 php.ini —— 此时应检查 php -i | grep "Loaded Configuration File",确保修改的是 CLI 对应的配置文件。
Linux 下启用 intl 的常见路径
多数发行版已预编译 intl,只需启用。以 Ubuntu/Debian 为例:
立即学习“PHP免费学习笔记(深入)”;
- 运行
sudo apt install php-intl(PHP 8.x 默认包名)或php7.4-intl(旧版本需匹配 PHP 小版本) - 无需手动编辑 php.ini:包安装后会自动在
/etc/php/*/cli/conf.d/下生成20-intl.ini,内容为extension=intl - 重启 CLI 无需 reload 服务,但若用到 Apache/Nginx,需执行
sudo systemctl restart apache2或sudo systemctl restart php*-fpm
CentOS/RHEL 用户请改用 yum install php-intl 或 dnf install php-intl,注意 PHP 模块名可能含 php-pecl- 前缀。
Windows 下启用 intl 的关键细节
Windows 用户最容易卡在这里,因为 intl 依赖 ICU 库,而官方 PHP Windows 包默认不带完整 ICU 数据:
- 打开你的
php.ini,取消注释;extension=php_intl.dll→ 改为extension=intl(PHP 7.4+ 推荐写法) - 确认
php_intl.dll文件存在于ext/目录下;若缺失,说明你下载的是 “Non-thread-safe (NTS)” 版但用了 Apache 模块(或反之),需重新下载匹配的 PHP 包 - 最关键一步:把 PHP 解压目录下的
icu*.dll(如icuuc72.dll)复制到System32或 PHP 根目录,并确保PATH包含 PHP 路径 - 运行
php --ri intl,若看到 “ICU version => 72.1” 才算真正就绪;只显示 “intl support => enabled” 但无 ICU 版本,后续仍可能在处理中文、时区、货币时崩溃
intl 不是“开了就行”的开关,它背后是完整的国际化数据支撑。很多线上环境看似通过了 Composer 检查,却在运行时因 ICU 数据缺失抛出 IntlException,这点常被忽略。











