-vvv 是 Composer 最底层调试开关,暴露 cURL 请求、SAT 解析器决策等细节,但卡顿需分层排查:网络问题(如 packages.json 下载卡住)优先验证 curl 连通性或换镜像;SAT 阶段卡住则检查约束冲突;gzip 解压失败多因代理篡改或缓存损坏;还需注意 config.verbose 关闭、platform 误配、内存不足及 xdebug 干扰。
-vvv 是 Composer 最底层的调试开关,能暴露 cURL 请求、SAT 解析器决策、未压缩元数据流和临时路径——但不是所有卡顿都靠它解决,得先看卡在哪一层。
卡在 Downloading https://repo.packagist.org/packages.json?这是网络问题,不是日志没开够
执行 composer install -vvv 后停在这行,说明底层 cURL 已发起请求,但 DNS 查询、TLS 握手或响应体接收失败。此时 -vvv 日志本身是生效的,只是它不打印 socket 超时细节。
- 先用
curl -v https://repo.packagist.org/packages.json单独验证网络连通性 - 国内用户优先换镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 若仍卡住,检查是否启用了代理(
COMPOSER_HTTP_PROXY)或系统级 SSL 证书异常 - PowerShell 下长日志易被截断,改用
cmd或加2>&1 | more分页查看
看到 Resolving dependencies through SAT 但没后续?依赖求解器真卡住了
-vv 会显示约束条件(如 php: ^8.1),而 -vvv 才会逐行打印 SAT 求解器如何排除某个包的某个版本——比如 “monolog/monolog 2.0.0 excluded by your root composer.json require (^3.0)”。
- 若卡在此阶段,大概率是版本约束太紧或存在隐式冲突,不是网络问题
- 加
--profile看耗时:composer update -vvv --profile,确认是不是 90% 时间花在解析上 - 临时绕过平台限制验证:
composer update -vvv --ignore-platform-reqs,排除 ext-zip、php 版本等干扰 - 别忽略
config.platform配置:若写了不存在的扩展(如"ext-foobar": "1.0"),-vvv会立刻报错退出,根本不会进入 SAT 阶段
日志里出现 Failed to decode response: zlib_decode(): data error?gzip 响应损坏了
这通常发生在中间代理(如公司防火墙、Charles/Fiddler)篡改了响应体,或本地缓存损坏。cURL 收到了 gzip 编码内容,但解压失败。