直接结论:不是 laravel 本身出问题,而是 composer 在解析依赖时发现 php 缺少必需扩展——必须先安装并启用错误提示中明确指出的 ext-xxx(如 fileinfo、openssl、mbstring 等),确保 cli 和 web 两套 php 环境均生效,再重试 composer install 或 laravel new。

直接结论:不是 Laravel 本身出问题,而是 Composer 在解析依赖时发现 PHP 缺少必需扩展 —— 你得先让 PHP 装上并启用对应扩展,再重试 composer install 或 laravel new。
怎么确认缺哪个扩展?
错误信息里一定明确写了扩展名,比如:
The requested PHP extension fileinfo is missing from your system.The following PHP extensions are required but are not installed: ctype, mbstring, openssl, tokenizer-
ext-sqlite3、ext-pdo_mysql等也常见
别跳过这步 —— 不同环境缺的扩展可能不同,Ubuntu、CentOS、XAMPP、phpstudy、LNMP 启用方式差异很大。先看清报错里具体是哪个 ext-xxx,再往下操作。
Linux(apt/yum)下快速补全基础扩展
Ubuntu/Debian 用户常缺 mbstring、xml、zip、fileinfo,直接装:
sudo apt-get install php-mbstring php-xml php-zip php-fileinfo php-curl php-bcmath php-opcache
CentOS/RHEL(8+)用 dnf:
sudo dnf install php-mbstring php-xml php-zip php-fileinfo php-curl php-bcmath
装完必须重启 PHP 服务:
- FPM 模式:
sudo systemctl restart php-fpm(或php8.1-fpm等具体版本) - Apache 模式:
sudo systemctl restart apache2(或httpd)
注意:PHP CLI 和 Web SAPI 可能用不同配置,php --ini 查 CLI 加载的 php.ini,phpinfo() 查 Web 加载的路径 —— 两个地方都得确认扩展已启用。
Windows(XAMPP/phpstudy)启用 fileinfo 等扩展
这类集成环境通常默认禁用 fileinfo,错误最集中:
- 打开
php.ini(路径如D:\xampp\php\php.ini或C:\phpStudy\PHPTutorial\php\php-7.4.3-nts\php.ini) - 搜索
fileinfo,找到类似这一行:;extension=php_fileinfo.dll或;extension=fileinfo - 删掉开头的分号
;,保存文件 - 重启 Apache 或 Nginx + PHP-FPM 服务(XAMPP 控制面板点 Restart)
如果改完仍不生效,运行 php --ini 确认 CLI 是否真在读这个 php.ini;若显示 Loaded Configuration File (none),说明 PHP CLI 根本没加载配置 —— 需手动指定或复制一份 php.ini-development 改名为 php.ini 并放对位置。
LNMP 手动编译安装 fileinfo(无预编译包时)
部分 LNMP 一键包(如老版本 lnmp.org)默认不带 fileinfo,需源码编译:
- 进 PHP 源码的 ext 目录:
cd /path/to/php-src/ext/fileinfo - 执行
/usr/local/php/bin/phpize(路径按你实际 PHP 安装位置调整) - 再运行:
./configure --with-php-config=/usr/local/php/bin/php-config -
make && make install,成功后会输出类似:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ - 编辑
/usr/local/php/etc/php.ini,添加:extension=fileinfo.so - 重启
php-fpm:/etc/init.d/php-fpm restart
这一步容易卡在 phpize 找不到或 php-config 路径写错 —— 务必用 which phpize 和 which php-config 确认路径,不要凭印象填。
最常被忽略的一点:CLI 和 Web 使用的 PHP 配置文件可能完全不同,composer install 走的是 CLI,而浏览器访问走的是 Web SAPI —— 所以即使网页能跑,composer 仍可能报错。务必两边都检查 php -m | grep fileinfo 和 php --ri fileinfo 是否返回信息。











