缺哪个PHP扩展就装哪个,如报错“The fileinfo extension is missing”则安装fileinfo;需确认CLI和FPM的php.ini均启用该扩展,并重载配置生效。

直接看报错里缺的是哪个扩展,比如 The fileinfo extension is missing 就装 fileinfo,The zip extension is missing 就装 zip——不是 Composer 有问题,是 PHP 缺模块,装上就过。
怎么看报错里缺哪个扩展
Composer 报错信息里会明确写出缺失的扩展名,格式通常是 ext-xxx 或 The xxx extension is missing。常见有:fileinfo、zip、openssl、mbstring、gd、intl 等。别猜,直接复制报错里的单词,后面全靠它定位。
验证是否真缺:终端执行 php -m | grep xxx(把 xxx 换成你看到的扩展名),没输出就是没启用;有输出但 Composer 还报错,说明 CLI 和 Web 用的不是同一份配置。
- 运行
php --ini查 CLI 模式加载的php.ini路径 - 宝塔里点对应 PHP 版本 → 「配置文件」看 FPM 模式用的
php.ini路径 - 两个路径可能不同,必须分别确认都启用了该扩展
宝塔面板里怎么开 fileinfo / zip / openssl 等扩展
宝塔 7.7+ 对主流 PHP 版本(7.2~8.3)已内置这些扩展源码,不用编译,点几下就行。
- 登录宝塔 → 左侧「软件商店」→ 找到你项目用的 PHP 版本(如
PHP-80)→ 点「设置」 - 切换到「安装扩展」选项卡 → 找到对应扩展(如
fileinfo、zip)→ 点「安装」或「启用」 - 进度条走完后,**务必点右上角「重载配置」**(不是重启 PHP,也不是重启面板)
如果「安装扩展」页里根本找不到这个选项,说明当前 PHP 是精简版或非标安装(比如 Docker 镜像、手动编译),得手动处理。
手动启用扩展的实操要点
适用于宝塔里没选项、Linux 命令行环境、或 Windows XAMPP/WAMP 场景。
- 先确认
php.ini路径:php --ini输出的「Loaded Configuration File」 - 编辑该文件,搜索
extension=xxx(如extension=fileinfo),去掉前面的分号;若整行不存在,手动添加 - PHP 8.0+ 推荐写成
extension=fileinfo.so,并确认文件存在:ls /www/server/php/XX/lib/php/extensions/no-debug-non-zts-*/fileinfo.so - 改完保存,执行
systemctl reload php-fpm-80(版本号替换成你实际用的),或在宝塔 PHP 设置页点「重载配置」
注意:Windows 下是 extension=php_fileinfo.dll,且要确保 extension_dir 指向正确的 ext/ 目录。
为什么开了还是报错?最常踩的三个坑
真正卡住的往往不是“怎么开”,而是开了之后没生效。
-
CLI 和 FPM 用两套
php.ini:Composer 只认php -m对应的 CLI 配置,跟网站跑的 FPM 无关。两个php.ini都得加extension=xxx -
开了没重载配置:宝塔点了「安装」但没点「重载配置」,或 Linux 下改了
php.ini没 reload php-fpm,扩展就不会加载 -
内存不足导致安装卡死:宝塔默认限制扩展编译内存为 512MB,
fileinfo在 configure 阶段容易触发 OOM。表现是按钮一直显示「正在安装」、卡在 99%。解决办法是加 Swap 或临时注释掉common.py里的内存检查逻辑
验证是否真生效:关掉当前终端,新开一个,再跑 php -m | grep xxx 和 composer diagnose。别信旧终端的缓存结果。











