Composer仅检查PHP扩展是否已加载,不安装或启用扩展;需手动启用mbstring、intl等扩展,并确保CLI与Web环境配置一致。

Composer本身不安装或启用PHP扩展,它只检查当前PHP环境中是否已加载所需扩展,并在检测失败时报错。
依赖声明只用于运行时检查
当某个包在composer.json的require中写入"ext-mbstring": "*"或"ext-intl": "*",Composer会在install或update阶段调用extension_loaded()验证对应扩展是否存在。若未启用,会中断安装并提示类似:
这类声明不会触发自动安装、编译或配置扩展,纯粹是约束性检查。
实际启用扩展需手动操作
mbstring、intl 属于PHP核心扩展,但默认未必启用。启用方式取决于你的PHP安装方式:
立即学习“PHP免费学习笔记(深入)”;
-
Linux(源码编译):重新编译PHP时加上
--enable-mbstring或--enable-intl -
Linux(包管理器安装,如apt):安装对应扩展包,例如
sudo apt install php-mbstring php-intl,再重启Web服务器或PHP-FPM -
Windows(XAMPP/WAMP):编辑
php.ini,取消注释extension=mbstring和extension=intl,确保extension_dir路径正确,然后重启服务 -
Docker:在Dockerfile中通过
docker-php-ext-install mbstring intl启用,并确认docker-php-ext-enable已调用
如何快速验证扩展是否就绪
运行以下命令可直观确认:
php -m | grep -i "mbstring\|intl"
php -r "var_dump(extension_loaded('mbstring'), extension_loaded('intl'));"
若返回bool(true),说明扩展已加载;若为false,Composer后续操作仍会失败。
避免“伪满足”:注意CLI与Web SAPI差异
常见误区是CLI下php -m能看到扩展,但Web环境(如Apache模块或PHP-FPM)却报错。这是因为两者可能使用不同的php.ini文件。
建议分别检查:
- CLI配置:
php --ini - Web配置:在Web项目中创建
phpinfo();页面,搜索Loaded Configuration File路径
确保两个环境都启用了相同扩展,否则Composer install成功,但运行时仍可能崩溃。











