必须用 -vvv 查看具体卡点再针对性配置超时参数:DNS 解析失败需换 DNS;Downloading 卡住调 http-basic-timeout;Executing command 卡住调 process-timeout;autoload 生成无响应查 WSL2、APCu 或内存。

直接调 process-timeout 或 http.timeout 很可能白忙——超时卡点不同,参数互不覆盖,必须先用 -vvv 看清停在哪一行,再针对性配。
怎么看 Composer 具体卡在哪个环节
运行 composer install -vvv 或 composer update -vvv,紧盯最后一行输出:
- 停在
Resolving dependencies:DNS 解析失败,跟 timeout 无关;试dig packagist.org或换 DNS(如114.114.114.114) - 停在
Downloading https://...:HTTP 层超时,http-basic-timeout(v2.2+)或旧版http.timeout起作用 - 停在
Executing command (CWD: ...):子进程(如git clone、unzip)卡死,process-timeout或环境变量COMPOSER_PROCESS_TIMEOUT才生效 - 停在
Generating autoload files后无响应:不是网络问题,检查 WSL2 symlink 性能、APCu CLI 是否启用、memory_limit是否 ≥ 1.5G
http-basic-timeout 和 process-timeout 必须一起设
这两个参数完全不重叠,只改一个等于只修半扇门:
-
http-basic-timeout控制单次 HTTPS 请求全过程(DNS + TLS 握手 + 首字节等待 + body 下载),默认仅 60 秒;大包或首字节延迟高时最先触发失败;推荐设为300(5 分钟):composer config -g http-basic-timeout 300 -
process-timeout控制整个命令生命周期(依赖解析、下载、解压、post-install-cmd、autoload 生成),默认 300 秒;大型项目或含 Git 子模块易超;推荐设为1200(20 分钟):composer config -g process-timeout 1200 - 设为
0表示不限时,但某些 TLS 握手失败场景下会无限挂起,无法 Ctrl+C 中断,不建议
镜像源配置错误会导致“看似生效,实则无效”
换源后仍超时,80% 是因为配置写错但 Composer 不报错:
- Composer 2.2+ 必须用
repositories.packagist.org,不是repo.packagist;验证命令:composer config -g repositories.packagist.org - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(拼出非法路径/composerpackages.json) - type 值必须显式写为
"composer",漏掉或拼错(如"compose")都会静默失效 - 改完必须执行
composer clear-cache,否则仍读旧缓存里的 packagist.org 元数据
代理环境下必须同时配 http-proxy 和 https-proxy
只配 http-proxy 一定失败——所有包仓库请求都走 HTTPS,未配 https-proxy 会静默直连:
- 正确写法:
composer config -g http-proxy http://127.0.0.1:7890和composer config -g https-proxy http://127.0.0.1:7890(协议头始终是http://) - 密码含
@或/必须 URL 编码,例如pa%40ss%2Fword - 验证:
composer config -g --list | grep -E "(http|https)-proxy"应输出两行且格式合规 - PHP 的
default_socket_timeout若低于你设的http-basic-timeout(常见为 60),也会提前掐断连接,需同步调高
最常被忽略的是:-vvv 输出里某一行看似正常,但前一行已暴露真实卡点——比如停在 Downloading 前一秒刚打印出 Executing command: git clone,那问题就在 process-timeout,不是 HTTP 层。别凭感觉调参,盯日志。











