fileinfo扩展未启用导致Composer报错,95%情况是CLI模式未加载而非未安装;需检查php-cli.ini、确认.so后缀(PHP8.0+必需)、验证实际加载状态并确保CLI使用正确PHP版本。

php -m 看不到 fileinfo 就是没启用
Composer 报错 The fileinfo extension is missing 或 requires ext-fileinfo,95% 情况下不是没装,而是没启用。运行 php -m | grep fileinfo,如果没输出,说明 CLI 模式下 PHP 根本没加载这个扩展。
常见误区:
- 只在宝塔面板里点了「安装」但忘了点右上角「重载配置」
- 以为开了 Web 版 PHP(FPM)的扩展,就等于 CLI 也开了——其实两者用的是不同配置
- 查了
php --ini显示 Loaded Configuration File 是/www/server/php/80/etc/php.ini,但实际 CLI 读的是/www/server/php/80/etc/php-cli.ini(宝塔 7.9+ 默认分离)
宝塔里找不到 fileinfo 选项?先确认 PHP 版本是否支持
宝塔 7.7 起对 PHP 7.2~8.3 都内置了 fileinfo 源码,但低配机器(如 1GB 内存)可能卡在安装环节:进度条停在 99%,或按钮一直显示「安装中」。
这时别硬等,优先做两件事:
- 进宝塔「软件管理」→「Linux 工具箱」→「Swap/虚拟内存」→ 添加 1024MB Swap
- 检查当前 PHP 是否为「精简版」:比如某些一键包或 Docker 镜像删掉了
ext/fileinfo目录,此时面板里根本不会列出该扩展 - 手动验证文件是否存在:
ls /www/server/php/80/lib/php/extensions/no-debug-non-zts-*/fileinfo.so—— 如果返回空,就得换 PHP 版本或重装
extension=fileinfo 还是 extension=fileinfo.so?看 PHP 大版本
PHP 7.x 兼容两种写法,但 PHP 8.0+ 必须带 .so 后缀,否则会静默失败(php -m 不报错也不显示)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
正确写法:
- PHP 7.4 及以下:
extension=fileinfo - PHP 8.0 及以上:
extension=fileinfo.so - Windows 下统一用:
extension=php_fileinfo.dll
注意:这行必须写在 php.ini 或 php-cli.ini 的 [ExtensionList] 区块之后,不能放在注释块里,也不能被其他 extension= 行覆盖。
改完 php.ini 还是报错?重点查 CLI 配置路径
Composer 是命令行工具,只认 php -v 和 php --ini 对应的那套环境。很多人在宝塔里启用了 FPM 的 fileinfo,却没动 CLI 的配置,结果 php -m 看到了,composer install 还是报错。
务必执行这三步验证:
-
php --ini确认 Loaded Configuration File 路径 -
php -i | grep 'extension_dir'看扩展目录是否匹配fileinfo.so实际位置 -
php -r "echo extension_loaded('fileinfo') ? 'yes' : 'no';"直接判断是否真加载成功
真正容易漏掉的,是宝塔多 PHP 版本共存时,CLI 默认调用的是系统 PATH 里的 php(比如 /usr/bin/php),而不是你面板里那个 8.0 —— 此时要 which php,再 sudo update-alternatives --config php 切换,或者直接用绝对路径跑:/www/server/php/80/bin/php /usr/bin/composer install。

















