HTTP传输阶段卡住应调http.timeout,它控制DNS、TLS握手、首字节等待及完整body下载,默认300秒;子进程超时(如unzip、git clone)则需调process-timeout,两者缺一不可。

直接改 process-timeout 和 http.timeout 两个参数,缺一不可——前者管 unzip/git clone,后者管 HTTPS 下载,只调一个大概率还是卡住。
卡在 Downloading https:// 或反复 retry 失败,该调哪个参数
这是 HTTP 传输阶段卡住,错误里常带 cURL error 28 或 failed to open stream: Connection timed out。它只响应 http.timeout,和 process-timeout 无关。
-
http.timeout控制整个 HTTPS 请求生命周期:DNS、TLS 握手、首字节等待、完整 body 下载,单位秒,默认仅 300(5 分钟) - 弱网或拉大 ZIP 包(如 Laravel 完整 dist)时,建议设为
1200 - 注意:PHP CLI 的
default_socket_timeout必须 ≥ 你设的http.timeout,否则底层 socket 会在 60 秒就掐断连接(查法:php -i | grep default_socket_timeout) - 不能写进
composer.json的config段——config.timeout是无效字段,早被废弃
报 The process timed out,错误里含 exceeded the timeout,该调哪项
这是子进程执行超时,比如 unzip 解压几百 MB、git clone 私仓、或跑 post-install-cmd 脚本太久。错误一定含 [RuntimeException] The process "" exceeded the timeout。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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 config process-timeout 1800(写入当前composer.json的config) - 全局生效:
composer config -g process-timeout 1800(写入~/.composer/config.json) - 临时覆盖优先级最高:
COMPOSER_PROCESS_TIMEOUT=2000 composer install - 设为
0表示禁用超时,但不推荐长期使用——网络卡死时会无限挂起
Composer 2.2+ 可单独调 HTTP 层细粒度超时
旧版本只能靠 http.timeout 和 process-timeout 硬扛;2.2+ 新增 http-basic-timeout,专管单次 GET 的连接 + 读取(比如拉 packages.json 或 ZIP 包头几 KB),不影响整个 body 下载。
- 默认仅 60 秒,弱网下易因握手慢中断,建议设为
300 - 支持写进
composer.json:"config": {"http-basic-timeout": 300} - 也支持全局:
composer config -g http-basic-timeout 300 - 命令行临时覆盖:
composer install --http-basic-timeout=300 - 注意:
--http-basic-timeout必须带等号,--http-basic-timeout 300会静默忽略
脚本执行超时(如 post-install-cmd 报 max_execution_time)
这不是 Composer 配置能控制的——脚本本身由 PHP 进程运行,超时由 PHP 的 max_execution_time 决定。
- 临时生效:
php -d max_execution_time=0 composer install - CI/CD 中推荐显式指定:
php -d max_execution_time=900 composer install --no-interaction - 在脚本内部调
set_time_limit(1200)也有效,但必须在逻辑开始后尽早调用 - 若 PHP CLI 的
max_execution_time被disable_functions禁用,则set_time_limit()会直接报错 -
composer.json里的timeout字段对脚本无效,别再往里写了
真正容易被忽略的是 PHP 底层 socket 超时和镜像源问题:哪怕你把 http.timeout 设成 1200,default_socket_timeout 还是 60,cURL 就会在 60 秒强制断连;而国内用户不切阿里云镜像,光调 timeout 只是在等一个永远连不上的 packagist.org。

















