卡在Resolving dependencies是DNS解析失败,非超时问题;须先用dig验证DNS、检查hosts、换公共DNS或手机热点测试,再确认镜像源配置正确(含末尾斜杠)并清缓存。

首次安装超时不是“慢”,而是根本没连上——必须先确认 DNS 和镜像源是否真生效,再调 timeout。
卡在 Resolving dependencies 是 DNS 问题,不是 timeout 能救的
这一步 Composer 只做域名解析(比如查 mirrors.aliyun.com 的 IP),不发 HTTP 请求、不读代理、不认 http.timeout。你改了超时也没用。
- 运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回有效 IPv4 地址;若超时或无响应,说明本地 DNS 不可用或被污染 - 临时换 DNS:Linux/macOS 编辑
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否误把mirrors.aliyun.com指向了127.0.0.1 - 用手机热点试一次——很多企业网会屏蔽境外域名,但热点通常直连通畅
镜像源配置错一个字符就等于没配
换源命令漏斜杠、拼错键名、少 type,都会导致“看似成功”,实则完全不生效,Composer 还是默默连 packagist.org。
- 必须严格用这个格式:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(末尾斜杠 ✅,repo.packagist是单数,type值必须是composer) - 验证是否真生效:
composer config -g repo.packagist输出必须是完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 换源后必须执行
composer clear-cache,否则旧缓存仍会复用失败地址 - 用
curl -I https://mirrors.aliyun.com/composer/packages.json确认镜像源 HTTP 状态是 200
Downloading 阶段才该动 http.timeout 和 process-timeout
只有到这一步,Composer 才真正发起 HTTP 请求下载 ZIP 包,此时 http.timeout 和 process-timeout 才起作用。
-
http.timeout控制单次 HTTP 请求(含 TLS 握手、首字节等待、body 传输),默认仅 60 秒;大包或镜像首字节延迟高时易触发失败,建议设为300~600 -
process-timeout控制整个命令生命周期(含解压、运行脚本、生成 autoload),默认 300 秒;项目依赖多或含 post-install-cmd 时容易超,建议设为1200 - 两个参数要一起调:
composer config -g http.timeout 600+composer config -g process-timeout 1200 - CI 环境更推荐用环境变量:
COMPOSER_PROCESS_TIMEOUT=1200,它比命令行参数更能覆盖插件启动的子进程
首次安装最常被忽略的是:镜像 URL 少了末尾斜杠、/etc/hosts 里有错误映射、DNS 没切干净。这些比 timeout 数值重要得多——数值再大,连不上源头也是白等。


















