答案:超时需按卡点分层处理——DNS解析失败换DNS或测dig;HTTP下载卡住调http.timeout(v2.1前)或http-basic-timeout(v2.2+);Git克隆卡死设process-timeout或改HTTPS;autoload生成无响应则查WSL2、APCu或权限。

超时不是配置没加够,而是没对症下药——卡在 DNS 解析、HTTP 下载、Git 克隆或 autoload 生成,调的参数完全不同。
看 -vvv 输出最后一行,定位卡点在哪一层
运行 composer install -vvv 或 composer update -vvv,紧盯终端最后几行输出:
- 停在
Resolving dependencies:DNS 或 packagist.org 域名根本解析失败,跟 timeout 无关;试dig packagist.org或换 DNS(如114.114.114.114) - 停在
Downloading https://...:HTTP 层卡住,该调http-basic-timeout(Composer 2.2+)或http.timeout(v2.1 及更早) - 停在
Executing command (CWD: ...):比如git clone或unzip卡死,process-timeout或环境变量COMPOSER_PROCESS_TIMEOUT才管用 - 停在
Generating autoload files后无响应:不是网络问题,可能是 WSL2 符号链接慢、APCu 未启用 CLI 模式、或文件系统权限异常
http.timeout 和 process-timeout 到底怎么设
这两个值作用域完全不重叠,混着调等于白费时间:
-
http.timeout(或 Composer 2.2+ 的http-basic-timeout):控制单次 HTTP 请求从 DNS 查询到 body 传输完成的总耗时,默认仅 60 秒;下载大 dist 包(如laravel/framework)时首字节延迟高,它最先触发失败;建议设为300~600 -
process-timeout:控制整个composer install命令生命周期上限,默认 300 秒;包含解压、执行post-install-cmd、生成 autoloader 等全部步骤;复杂项目建议设为1200(20 分钟) - 注意:
http-basic.timeout是 v1 废弃项,v2 完全不读取;设了也没用
换镜像源比加 timeout 更治本
国内直连 packagist.org 失败率极高,尤其涉及 GitHub API 或私有包时;换源是见效最快的操作:
- 阿里云镜像(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 腾讯云镜像:
composer config -g repo.packagist composer https://packagist.proxy.tencent.com - 禁用官方源 fallback(防兜底拖慢):
composer config -g repos.packagist false - CI 环境务必加
--prefer-dist,避免走git clone触发 SSH 超时
CI/CD 和私有包场景的隐藏坑
这些地方 timeout 配置容易失效,必须组合处理:
- GitHub 私有包卡在
https://api.github.com/:必须配 GitHub Token,写入~/.composer/auth.json中的github-oauth字段 - Docker 容器里超时仍触发:检查是否被
docker run --stop-timeout或宿主机timeout命令包裹——那是另一层中断,Composer 根本感知不到 - Git 私有仓库卡在
Cloning into:改用 HTTPS 克隆(把git@github.com:user/repo.git换成https://github.com/user/repo.git),或设GIT_SSH_COMMAND="ssh -o ConnectTimeout=10" - 内存不足也会表现为“超时”:
ProcessTimedOutException可能是 PHPmemory_limit不足(尤其update解析锁文件阶段),建议 ≥ 1.5G
真正卡住时,延长 timeout 只是让你多等一会儿;优先切镜像、看 -vvv、查 DNS、配 Token,才能让安装真正跑起来。很多“超时”背后其实是 GitHub API 拒绝、Git 权限缺失或 WSL2 文件系统延迟,这些地方一动不动,调再久也没用。











