先运行 php -m | grep intl 和 php -r "echo INTL_ICU_VERSION;" 验证 intl 是否真正启用及 ICU 版本是否足够,再检查 php.ini 路径、extension_dir 下 ICU DLL 文件、系统 PATH 及 locale 配置,最后用 php -r "var_dump(class_exists('Normalizer'));" 快速确认功能可用性。

composer install 报错 “requires ext-intl” 怎么确认真缺?
别信报错就去装,先验证是不是真没启用。Composer 只看 extension_loaded('intl') 返回值,不校验 ICU 版本或功能完整性。
- 运行
php -m | grep intl—— 没输出说明扩展根本没加载 - 运行
php -r "echo INTL_ICU_VERSION;"—— 报Fatal error: Undefined constant INTL_ICU_VERSION说明 intl 扩展未启用,不是版本低 - 运行
php --ini看Loaded Configuration File路径,确保你改的是 CLI 模式用的php.ini,不是 Apache 或 Nginx 的那个
Linux/macOS 下 intl 扩展装了但 php -m 不显示?
常见于包管理器安装后未启用模块,或 PHP 版本切换导致路径错位。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Ubuntu/Debian:装完
sudo apt install php-intl后必须补sudo phpenmod intl(否则php -m不会列出) - CentOS/RHEL:检查
/etc/php.d/intl.ini是否存在且未被注释;若用dnf install php-intl,确认 PHP SAPI 是cli而非fpm,两者配置可能分离 - macOS + Homebrew:如果用
brew install php@8.2,intl 通常已内置;若仍缺失,重装命令是brew reinstall php@8.2,不是单独装 intl
Windows 下 intl 启用后还是报错?重点查三处
Windows 对 intl 依赖更敏感,光开 extension 不够,还得对得上 DLL 和 ICU 动态库。
- 打开
php.ini(用php --ini确认路径),取消注释extension=intl—— 注意不是extension=php_intl.dll(PHP 8+ 已统一为intl) - 检查
extension_dir指向目录下是否存在icudtXX.dll、icuinXX.dll、icuucXX.dll(XX 是数字,如 73),缺一个都可能导致Normalizer类找不到 - 确认系统 PATH 包含 PHP 目录,否则 Windows 加载 DLL 时可能找不到依赖的 ICU 库
intl 扩展已启用,但中文 slug 为空或 Normalizer 类报错?
扩展加载成功 ≠ 功能可用。intl 依赖底层 ICU 库,而 ICU 版本太旧会导致部分类(如 Normalizer)不可用,或 cocur/slugify 对中文返回空字符串。
- 运行
php -r "echo INTL_ICU_VERSION;",低于50.1就必须升级系统 ICU(Linux 用apt install libicu-dev或源码编译,macOS 用brew upgrade icu4c && brew link --force icu4c) -
cocur/slugify必须显式传['locale' => 'zh'],且setlocale(LC_ALL, 'zh_CN.UTF-8')要能生效——这又依赖系统 locale 数据是否完整(Linux 可运行locale -a | grep zh_CN验证) - 若实在无法升级 ICU,临时方案是绕过 intl:用
iconv('UTF-8', 'ASCII//TRANSLIT', $str)预处理中文,但效果远不如intl稳定
php -r "var_dump(class_exists('Normalizer'));",比看 phpinfo() 页面快十倍。

















