卡在downloading https://时应调http.timeout,它控制dns解析、tls握手、首字节等待及整个body传输总时间,默认300秒,弱网下易超时,需同步调高php的default_socket_timeout。

必须同时调高 http.timeout、process-timeout 和 http-basic-timeout,缺一不可;只改一个参数,大概率还是超时。
卡在 Downloading https:// 时该调哪个参数
这是 HTTP 请求生命周期卡住,比如拉 packages.json 或 ZIP 包,错误里常带 cURL error 28 或反复 retry 后失败。它只认 http.timeout,和 process-timeout 完全无关。
-
http.timeout控制 DNS 解析 + TLS 握手 + 首字节等待 + 整个 body 下载的总时间,默认仅 300 秒,弱网下极易触发 - 项目级生效:运行
composer config http.timeout 1200,写入当前composer.json的config段,可提交、可复现 - 全局生效:运行
composer config -g http.timeout 1200,写入~/.composer/config.json - 临时覆盖优先级最高:运行
COMPOSER_HTTP_TIMEOUT=1200 composer install,适合 CI 调试 - ⚠️ 关键陷阱:PHP CLI 的
default_socket_timeout若低于你设的http.timeout(常见值是 60),cURL 会在底层直接掐断连接——务必同步检查并调高:php -i | grep default_socket_timeout,再用php -d default_socket_timeout=1200 composer install验证
The process timed out 错误该调哪一项
这是子进程执行太久被杀,比如 git clone、unzip、跑 post-install-cmd 脚本。错误里一定含 [RuntimeException] The process "" exceeded the timeout,加 -vvv 可看到最后那条命令。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout控制单个外部命令最大执行时间,默认 300 秒,和 HTTP 完全无关 - 项目级改法:在
composer.json顶层加"config": {"process-timeout": 1800} - 全局改法:运行
composer config -g process-timeout 1800 - 临时覆盖:用
COMPOSER_PROCESS_TIMEOUT=1800 composer install或命令行参数--timeout=1800(注意必须带等号) - 设为 0 表示禁用超时,但可能卡死无响应;调试建议先设 600,确认能走通再调高
为什么改了 composer.json 的 config.timeout 没用
config.timeout 是无效字段 —— Composer 根本不认这个 key。你看到的文档或旧教程里写的这个配置,早已被废弃多年。
- 真正起效的是三个独立参数:
http.timeout、process-timeout、http-basic-timeout,它们互不影响 -
http.timeout不能通过写进composer.json的config段来设置(会静默忽略) -
process-timeout和http-basic-timeout可以写进composer.json的config段,但http.timeout必须靠命令行或环境变量 - Composer 2.2+ 才支持
http-basic-timeout;旧版本只能靠http.timeout+process-timeout硬扛
代理环境下还要注意什么
国内用户不切镜像源,--timeout=3600 也救不了连不上 packagist.org 的情况;代理配错更是常见隐形杀手。
- 必须同时配置
http-proxy和https-proxy,且https-proxy值必须以http://开头(不是https://) - 验证方式:
composer config -g --list | grep -E "(http|https)-proxy",确认两行都存在且格式合规 - 代理只是链路一环,超时还可能卡在其他环节:
http.timeout默认仅 300 秒,弱网下极易触发;需同步运行composer config -g http.timeout 600 - NTLM 代理(如公司 Windows 域环境)Composer 原生不支持,必须引入中转代理工具(如
cntlm或px),再把两个 proxy 都指向中转服务
最易被忽略的点是 PHP 底层 socket 超时与 Composer 配置的错位——哪怕你把 http.timeout 设成 1200,只要 default_socket_timeout 还是默认的 60,连接就会在 60 秒后被 cURL 直接中断,报错却只显示 “cURL error 28”,根本看不出根源在 PHP 配置上。










