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安装方式:
--enable-mbstring或--enable-intl
sudo apt install php-mbstring php-intl,再重启Web服务器或PHP-FPMphp.ini,取消注释extension=mbstring和extension=intl,确保extension_dir路径正确,然后重启服务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下php -m能看到扩展,但Web环境(如Apache模块或PHP-FPM)却报错。这是因为两者可能使用不同的php.ini文件。
建议分别检查:
php --ini
phpinfo();页面,搜索Loaded Configuration File路径确保两个环境都启用了相同扩展,否则Composer install成功,但运行时仍可能崩溃。