默认 composer install 会显示进度条,但可能因环境抑制而不可见;加 -v 可强制显示实时下载进度,若仍不显示则可能是全局配置启用了 no-progress,此时可用 --progress 覆盖。

composer install 怎么看到下载进度条
默认情况下 composer install 就会显示进度条,但很多人没注意它被“刷太快”或“根本没出现”,其实是被环境或参数抑制了。
- 最简单有效的方式是加
-v:运行composer install -v,你会看到类似Downloading monolog/monolog (3.5.0): 100% [============================>]的实时进度 - 如果仍不显示,大概率是全局配置里启用了
no-progress(比如 CI 环境预设),可临时覆盖:composer install --progress - 别用
--no-progress测试进度——这命令是专门用来关掉它的,不是开启方式 - 进度条依赖终端支持 ANSI 控制符;在某些老旧 SSH 客户端、Docker logs 或重定向到文件时会自动禁用(此时加
-v仍能输出字节量和速度信息)
怎么拿到真正有用的安装日志(不只是“成功/失败”)
只看进度条不够定位问题,真要查卡在哪、为什么失败,得让 Composer “多说点话”。
-
-v:显示包下载顺序、重试次数、HTTP 状态码(如 206 Partial Content)、已下载字节数 -
-vv:额外打印请求头(User-Agent、Accept)、响应头(Content-Length)、缓存命中情况 -
-vvv:最全,含完整 HTTP 请求/响应体(⚠️含认证 token,切勿发到公开群或日志系统) - 配合
--profile可看到耗时分布,例如 “Resolving dependencies” 花了 8.2s,“Installing packages” 花了 12.7s,帮你判断瓶颈在解析还是下载
为什么有时候 -v 也没日志,或者卡在 “Updating dependencies” 不动
这不是日志没开,而是 Composer 根本还没走到下载阶段——它卡在依赖解析环节,而这个过程默认完全静默。
- 此时必须用
composer update -vvv,观察最后输出的包名,比如停在Resolving dependencies for laravel/framework...,说明冲突源很可能就在这 - 常见诱因:本地
composer.lock损坏、镜像源超时未响应、PHP 内存不足(Allowed memory size exhausted)、或某个包的conflict规则太激进 - 不要盲目等,先
composer clear-cache再试;若仍卡住,尝试缩小范围:composer update vendor/package-name -vvv - 国内网络下,不换镜像源就开
-vvv,很可能看到大量Connection timed out而不是真实解析问题
想保存日志又不想被进度条干扰?别硬截屏
进度条本质是覆盖式输出,直接重定向到文件会得到乱码或空内容。要存可用日志,得关掉它再开详细模式。
- 正确组合:
composer install --no-progress -vv > install.log 2>&1,这样日志干净、可 grep、适合丢给同事排查 -
--no-progress和-vv不冲突,前者只删动画,后者照常输出结构化文本 - CI 环境中建议固定使用该组合,避免因终端类型差异导致日志缺失
- 注意:加了
--no-progress后,Downloading行不会出现,但你会看到Package operations: 42 installs, 3 updates, 0 removals+ 每个包的解压/拷贝耗时,信息量其实更大










