必须修改CLI模式下php.ini启用8个扩展:mbstring、openssl、pdo、tokenizer、xml、ctype、json、fileinfo,尤其fileinfo不可缺,否则composer install卡住且vendor无法生成。

部署Laravel项目时因PHP扩展缺失导致composer install卡住、vendor目录无法生成、php artisan命令报错Class not found或cURL error 60,本质是CLI模式下php.ini未启用Laravel强制依赖的扩展,必须定位并修改正确的配置文件才能解决。
确认当前CLI使用的php.ini路径
打开CMD或PowerShell,执行:
php --ini
重点查看Loaded Configuration File这一行输出的完整路径,例如C:\laragon\bin\php\php-8.3.12-Win32-vs17-x64\php.ini。⚠️别改Apache或Nginx用的php.ini,只动这一行指向的文件——因为composer和artisan全部走CLI模式,和浏览器访问无关。
如果输出显示Loaded Configuration File: (none),说明PHP根本没加载任何ini文件,需手动创建或检查PHP安装是否损坏。
立即学习“PHP免费学习笔记(深入)”;
启用Laravel必需的8个扩展
用记事本、Notepad++或VS Code打开上一步确认的php.ini文件。
搜索以下8行,确保每行前面没有分号 ;,且拼写与下方完全一致(大小写敏感,不能多空格):
extension=mbstring
extension=openssl
extension=pdo
extension=tokenizer
extension=xml
extension=ctype
extension=json
extension=fileinfo
fileinfo最容易被忽略,但它不是可选项:Composer解包league/flysystem等核心依赖时硬性调用finfo_open(),缺了就停在“Installing dependencies”不动,vendor目录始终为空。
mbstring和openssl是Laravel启动第一道检查关卡,报“Class 'Mbstring' not found”或“cURL error 60”基本就是它们没开。
验证扩展是否真正生效
保存php.ini后,关闭所有已打开的命令行窗口,新开一个CMD/PowerShell。
执行:
php -m | findstr -i "mbstring fileinfo openssl"
Windows下必须看到三行独立输出,分别含mbstring、fileinfo、openssl;Linux/macOS用grep -E "(mbstring|fileinfo|openssl)"。
注意:不要依赖重启Laragon或Apache来生效——CLI模式读取的是php.ini本身,改完保存即刻可用,但旧终端进程缓存了旧配置,必须新开终端。
若仍无输出,说明你改错了文件,回去重查php --ini结果。



















