全局配置最稳,一行命令生效:composer config -g process-timeout 1800 和 composer config -g http-basic-timeout 300(2.2+),二者独立控制全流程与单次http超时,还需同步调高php的default_socket_timeout。

直接改全局配置最稳,一行命令就能生效,不用改文件、不依赖环境变量优先级博弈。
composer config -g process-timeout 1800 是最简方案
这条命令写入 ~/.composer/config.json,所有项目都继承该值,下次运行 composer install 就自动用 30 分钟上限:
composer config -g process-timeout 1800
- 数值设为
0表示禁用超时(慎用,真卡住会无限挂起) - 别写
timeout或config.timeout—— Composer 完全不认这两个 key - 执行后可用
composer config -g process-timeout验证是否写入成功 - 该设置对
composer update、composer require全部生效
下载慢时单靠 process-timeout 不够,得配 http-basic-timeout
如果卡在 Downloading https://...,尤其是拉大 ZIP 包时,process-timeout 控的是整个流程,而真正掐断连接的是 http-basic-timeout(默认仅 60 秒):
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer config -g http-basic-timeout 300
- 这个参数从 Composer 2.2+ 才支持,旧版本无效
- 它只管单次 HTTP GET 的连接和读取(比如拉包头或小文件),不控制整个 body 传输
- 和
process-timeout是两层独立开关,必须一起调 - 别指望
http.timeout—— 它不能通过composer config设置,只能靠环境变量
临时救急用 --timeout= 和 --http-basic-timeout=,但注意语法
CI/CD 调试或本地一次性的场景,命令行参数优先级最高,但写法容错率极低:
composer install --timeout=1200 --http-basic-timeout=240
- 等号
=必须存在,--timeout 1200会被静默忽略 -
--timeout是process-timeout的命令行别名,不是新参数 -
--http-basic-timeout同理,只在 Composer 2.2+ 有效 - 环境变量如
COMPOSER_PROCESS_TIMEOUT=1800也可用,但需确保没被 Docker--stop-timeout或外层timeout命令覆盖
真正容易被忽略的点是:PHP 底层 socket 超时会提前截断。哪怕你把 http-basic-timeout 设成 300,如果 PHP CLI 的 default_socket_timeout 还是默认 60 秒,cURL 仍会在 60 秒后报 cURL error。这个值得单独检查并同步调整。










