宝塔面板中php缺少fileinfo扩展时,95%情况只需在软件商店对应php版本的安装扩展页勾选启用并重载配置即可,无需重编译;内置支持7.2~8.3版本,内存不足时可添加swap或调整限制。

宝塔面板里 PHP 缺少 fileinfo 扩展,95% 的情况根本不用重编译,直接在面板勾选启用即可生效;Composer 报错“The fileinfo extension is missing”基本都是因为没启用、没重载配置,或 CLI 和 Web 使用了不同 PHP 版本。
宝塔后台点几下就能启用,别碰命令行编译
从宝塔 7.7 开始,所有主流 PHP 版本(7.2~8.3)都已内置 fileinfo 源码,只是默认未启用。手动编译不仅慢,还容易因内存不足失败——尤其在 1GB 内存的轻量服务器上,make 过程常被 OOM kill。
- 登录宝塔 → 左侧「软件商店」→ 找到你当前用的 PHP(如
PHP-80)→ 点击「设置」 - 切换到「安装扩展」页 → 找到
fileinfo→ 点击「安装」(按钮文字可能是「安装」或「启用」) - 进度条走完后,务必点击右上角「重载配置」(不是重启 PHP,也不是重启面板)
- 验证:终端执行
php -m | grep fileinfo,应输出fileinfo
点了安装却没反应?大概率是内存被宝塔拦住了
宝塔默认限制单次扩展编译最多使用 512MB 内存,而 fileinfo 在 configure 阶段会临时吃高内存。提示“正在安装”但按钮一直不变成“已安装”,或卡在 99%,基本就是这个原因。
- 先加 Swap:宝塔 → 「软件管理」→ 「Linux工具箱」→ 「Swap/虚拟内存」→ 添加 1024MB Swap
- 或者绕过限制:编辑
/www/server/panel/class/common.py,找到类似if int(mem_free) 的判断,把整行 <code>raise Exception(...)前面加#注释掉,然后执行bt restart - 注意:绕过限制 ≠ 解决物理内存不足。如果机器只有 512MB 内存,即使加了 Swap,
make仍可能失败
CLI 和 Web 用的不是同一个 PHP?Composer 还是报错
Composer 是命令行工具,只认 php -m 对应的 CLI 版本;而网站用的是 FPM 模式。两者可能加载不同的 php.ini,导致你在面板里启用了,php -m 看到了,但 Composer 仍报错。
- 查 CLI 当前用的配置:
php -i | grep 'Loaded Configuration File' - 查 FPM 当前用的配置:宝塔 → PHP 设置 → 「配置文件」路径(通常是
/www/server/php/XX/etc/php.ini) - 确保两个
php.ini文件里都有extension=fileinfo.so(PHP 8.0+ 必须带.so,PHP 7.x 可省略) - 确认
fileinfo.so文件存在:ls /www/server/php/XX/lib/php/extensions/no-debug-non-zts-*/fileinfo.so
实在找不到 fileinfo 选项?可能是精简版或非标安装
某些 Docker 镜像、手动编译 PHP 或旧版宝塔残留环境,会导致「安装扩展」页压根不显示 fileinfo。这时得手动补上加载指令,前提是 fileinfo.so 文件本身存在。
- 先确认扩展文件是否存在:
ls /www/server/php/XX/lib/php/extensions/no-debug-non-zts-*/fileinfo.so - 如果存在,在对应 PHP 版本的
php.ini末尾追加:extension=fileinfo.so - 如果不存在,再考虑手动编译:进入
/www/server/php/XX/src/ext/fileinfo/,执行/www/server/php/XX/bin/phpize && ./configure --with-php-config=/www/server/php/XX/bin/php-config && make && make install - 无论哪种方式,改完
php.ini后必须点「重载配置」,否则无效
真正容易被忽略的点是:重载配置 ≠ 重启 PHP,也 ≠ 重启面板;CLI 和 FPM 的 php.ini 路径不同;PHP 8.0+ 必须写 extension=fileinfo.so,漏掉 .so 就加载失败。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











