应调http.timeout,它控制dns解析、tls握手、首字节等待及整个body传输的总时间,默认300秒,弱网下易超时;必须同步调高php的default_socket_timeout,否则底层socket会提前掐断连接。

直接改 http.timeout,但必须同步调高 PHP 的 default_socket_timeout,否则白设。
卡在 Downloading https:// 时该调哪个参数
这是 HTTP 请求全周期超时,不是网络慢,而是 DNS 解析、TLS 握手、首字节等待、整个 ZIP body 传输加起来超过阈值。错误里常见 cURL error 28 或反复 retry 后失败。
-
http.timeout是唯一生效项(Composer 2.x),控制整个 HTTPS 请求生命周期,单位秒,默认仅300 -
process-timeout完全不参与——它只管git clone、unzip这类子进程,和下载阶段无关 -
config.timeout是无效字段,Composer 根本不识别,删掉别写
为什么设了 http.timeout 还是超时
PHP 底层 socket 会提前掐断连接。即使你把 http.timeout 设成 1200,只要 CLI 模式下的 default_socket_timeout 是默认的 60,cURL 就会在 60 秒后直接报错。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查当前值:
php -i | grep default_socket_timeout - 临时改(推荐 CI):
php -d default_socket_timeout=1200 composer install - 永久改:编辑
php.ini中的default_socket_timeout = 1200,然后重启 CLI 环境
项目级 vs 全局 vs 临时设置怎么选
三者优先级:环境变量 > 项目级配置 > 全局配置。日常开发建议项目级固化,CI 环境用环境变量兜底。
- 项目级(可提交、可复现):
composer config http.timeout 1200,写入当前composer.json的config段 - 全局(影响所有项目):
composer config -g http.timeout 1200,写入~/.composer/config.json - 临时覆盖(最高优先级):
COMPOSER_HTTP_TIMEOUT=1200 composer install
真正容易被忽略的是:HTTP 超时只是第一道关,unzip 和 git clone 阶段还会再卡一次,那得靠 process-timeout;而国内用户不切镜像源,光调 timeout 基本没用。










