调大 composer 网络超时需设置 http.timeout(如 composer config -g http.timeout 300),而非 process-timeout;换国内镜像可提速但不解决根本超时,还需排查代理、dns、tls 或中间网络问题。

Composer 安装或更新时卡在 Downloading... 或报 cURL error 28: Operation timed out,基本就是默认超时太短 + 网络不稳定,不是配置错,也不是源失效——改两个参数就能过。
怎么调大 composer 的网络超时时间
Composer 底层用 cURL,超时由 process-timeout 和 http.timeout 控制,但二者作用不同,容易混用:
-
process-timeout管的是整个命令(比如composer install)的总耗时,超了就直接中断,和下载无关 -
http.timeout才是控制每次 HTTP 请求的连接+读取超时(单位秒),这才是解决卡住的关键 - 全局设置:运行
composer config -g http.timeout 300(建议 300~600) - 项目级覆盖:在项目根目录
composer.json里加"config": { "http.timeout": 600 }
为什么换国内镜像还超时
换源(如阿里、腾讯)能加速下载,但不解决超时本身——如果本地网络到镜像服务器中间有丢包、DNS 慢或 TLS 握手卡顿,http.timeout 仍会触发。常见现象:
- 镜像地址能
curl -I通,但composer update卡在某个包 - 同一台机器,npm/yarn 正常,composer 就超时(因为 npm 默认 timeout 更长)
- 公司内网走代理时,
http-proxy配置没生效,请求实际走直连且被限速 - 务必检查:运行
composer config -g http-proxy看是否漏设代理,或临时禁用(composer config -g --unset http-proxy)排除干扰
遇到 cURL error 60 或 SSL 验证失败怎么办
这和超时无关,但常被一起遇到——尤其在企业网络或老系统上,cURL 缺少可信 CA 证书链:
- 错误典型是
cURL error 60: SSL certificate problem: unable to get local issuer certificate - 别直接关验证(
ssl.no-verify = true),有安全风险 - 优先用系统证书:Linux/macOS 下确保
openssl version -d输出路径存在有效 certs;Windows 用户可下载 cacert.pem,然后设composer config -g cafile /path/to/cacert.pem - 如果用了代理且代理做 SSL 中间人(如 Fiddler、Charles),必须把代理的根证书导入系统信任库,否则
cafile也救不了
真正麻烦的不是超时值本身,而是网络路径中某一段(DNS、TLS、中间代理、镜像节点)出现非对称延迟——它可能只影响特定包、特定时刻,所以单纯拉长 http.timeout 是必要但不充分的。留个心眼:如果调到 600 还超时,先 ping 和 curl -v 对应镜像域名,看卡在哪一环。










