laravel-admin安装失败大概率因fileinfo扩展未启用,其依赖的intervention/image和league/flysystem在composer安装阶段即检查该扩展,缺失则中止安装并报错。

laravel-admin 安装失败,大概率是 fileinfo 扩展没启用,不是版本或网络问题,先别删重装。
为什么 laravel-admin 会卡在 fileinfo 上
laravel-admin 本身不直接调用 finfo 类,但它依赖的 intervention/image 和 league/flysystem 在 Composer 安装阶段就会检查 ext-fileinfo。一旦缺失,Composer 直接中止安装,vendor 目录建不起来,后续所有命令(包括 php artisan vendor:publish)都会报错。
典型错误信息长这样:
league/flysystem[1.1.0] requires ext-fileinfo * -> it is missing from your system.
注意:这个报错只出现在 CLI 模式下,Web 服务器(如 Nginx/Apache)用的 php.ini 可能已启用 fileinfo,但 Composer 不认那个——它只看 php --ini 输出的 Loaded Configuration File。
怎么确认是不是 fileinfo 没开
执行这三步,5 秒内就能定位问题:
- 运行
php --ini,抄下Loaded Configuration File后面的路径(比如/etc/php/8.2/cli/php.ini或C:\php\php.ini) - 用文本编辑器打开该文件,搜索
fileinfo - 检查是否存在以下任意一种情况:
-
;extension=fileinfo(Linux/macOS)或;extension=php_fileinfo.dll(Windows)→ 被注释了 - 整行根本不存在 → 扩展没编译进 PHP,或没写进配置
-
extension=fileinfo.so存在,但ls -l /path/to/fileinfo.so提示文件不存在 → so 文件丢了
-
不同环境启用 fileinfo 的实操要点
别盲目复制命令,先分清你用的是什么环境:
-
宝塔面板:进【软件商店】→ 找到当前 PHP 版本 → 【设置】→ 【安装扩展】→ 点
fileinfo右侧【安装】→ 【重载配置】。别碰 SSH 编译,除非面板里压根没这个选项。 -
Ubuntu/Debian(apt 安装的 PHP):运行
sudo apt install php-fileinfo,然后sudo systemctl restart php8.2-fpm(把 8.2 换成你的版本)。 -
macOS(Homebrew):
brew reinstall php@8.2(默认带fileinfo),或手动加extension="fileinfo"到php.ini。 -
Windows(phpstudy/xampp):打开
php.ini,取消;extension=php_fileinfo.dll前的分号;确认php_fileinfo.dll真的存在于ext/目录下。
改完配置后,必须重启 PHP CLI 环境生效:关掉终端重开,或在 Windows 下重启 phpstudy 服务。别信“改完就 OK”,php -m | grep fileinfo 才算数。
fileinfo 启用后还失败?重点查这三个地方
常见但容易被跳过的细节:
-
composer install报错里出现Class 'finfo' not found→ 不是没启用,是 PHP 运行时找不到类,说明fileinfo.so加载失败,检查error_log或php -i | grep fileinfo是否显示 “enabled” - 宝塔里装了
fileinfo,但php --ini显示Loaded Configuration File: (none)→ PHP 没加载任何 ini 文件,得手动指定或补一个php.ini - 用了 Docker,PHP 镜像没装
fileinfo→ 在Dockerfile里加RUN docker-php-ext-install fileinfo,别只改容器里的 php.ini
最麻烦的情况是 PHP 为源码编译安装且没带 --enable-fileinfo 参数,这时只能重编译或换预编译包——别在生产环境硬刚。











