卡在Downloading https://时应调http.timeout,它控制DNS解析、TLS握手、首字节等待及整个body传输的总耗时,默认300秒,需设为600或更高;卡在Executing command或Cloning则须同步配置process-timeout,二者作用阶段不同、互不替代。

直接改 http.timeout 和 process-timeout,但只调一个基本没用——它们管的不是同一层。
卡在 Downloading https:// 时该调哪个参数
这是 HTTP 请求卡住,比如拉 packages.json、解压 ZIP 包,错误里常带 cURL error 28 或反复 retry 后失败。它只认 http.timeout,和 process-timeout 完全无关。
- 项目级生效(推荐,可提交):
composer config http.timeout 600 - 全局生效(影响所有项目):
composer config -g http.timeout 600 - 临时覆盖(CI 调试用):
COMPOSER_HTTP_TIMEOUT=1200 composer install - 注意:
--http-timeout=600仅 Composer 2.2+ 支持;旧版本必须用http.timeout配置项
卡在 Cloning into 或报 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
- 项目级:直接在
composer.json顶层加"config": {"process-timeout": 1200} - 全局改(新版有效):
composer config -g process-timeout 1800 - 环境变量兜底(CI 更可靠):
COMPOSER_PROCESS_TIMEOUT=2000 composer update - 设为
0表示不限时,但不推荐——万一远程 Git 仓库彻底不可达,会无限挂起
为什么设了还卡?PHP 底层 socket 先掐断了
即使你把 http.timeout 设成 1200,仍可能在 60 秒左右就断开,错误里没超时字样,而是直接连接失败或空响应。这是因为 PHP CLI 的 default_socket_timeout(常为 60)会早于 Composer 的超时机制生效。
- 查当前值:
php -i | grep default_socket_timeout - 临时绕过:
php -d default_socket_timeout=1200 $(which composer) install - 长期方案:找到 CLI 专用
php.ini(用php --ini查路径),改default_socket_timeout = 1200,并顺手检查max_execution_time -
default_socket_timeout影响所有 stream/curl 行为,不是 Composer 独有
真正卡住的时候,往往不是 timeout 没设够,而是 DNS 解析失败、镜像源失效、或者系统 OOM killer 杀了进程——这些地方比调参更值得先看一眼。

















