必须改,否则 git clone、unzip 或 post-install-cmd 阶段会因默认300秒超时被 composer 硬中断,报 processtimedoutexception;composer ^2.2+ 已废弃全局 config 命令,应优先用项目级配置或环境变量设置为600~1800秒。

必须改,不改就一定会在 git clone、unzip 或 post-install-cmd 脚本阶段被硬中断,错误里明晃晃写着 ProcessTimedOutException —— 这不是网络问题,是 Composer 自己杀的。
为什么改了全局 config 还是 300 秒?
Composer ^2.2+ 已废弃 composer config --global process-timeout,命令执行无报错但实际不写入配置。你看到的仍是默认值。
- 验证方式:
composer config --global process-timeout输出为空,说明没生效 - 真正有效的全局方式是环境变量:
export COMPOSER_PROCESS_TIMEOUT=1800(Linux/macOS)或 Windows 系统级变量COMPOSER_PROCESS_TIMEOUT - 项目级配置优先级更高:哪怕你设了全局变量,只要
composer.json里有"process-timeout": 300,它就按 300 秒走
卡在 git clone 私有库?别只调 process-timeout
内网 GitLab、Gitee 私有版等常因连接池限制、SSH 握手慢、submodule 嵌套深而卡住,单纯拉高 process-timeout 只是掩盖问题。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先确认是否真卡在 git:加
-v运行,看最后输出是不是Running command (CWD): git clone https://... - Git 层超时要单独调:
git config --global http.postBuffer 524288000(500MB),或git config --global core.compression 0减少解压压力 - 若用 SSH,检查
~/.ssh/config是否配了ServerAliveInterval 60
设成 0 真的能一劳永逸?
不能。设为 0 表示禁用超时检查,但会把内存耗尽、死循环、权限拒绝等底层问题彻底藏起来。
- 常见假象:
composer install --process-timeout=0跑通了,但 20 分钟后机器假死、proc_open(): fork failed报错才浮现 - 更危险的是:某 post-install-cmd 脚本因数据库不可达无限重试,
process-timeout=0让它一直占着进程不退出 - 合理范围是
600~1800秒;超过 25 分钟还跑不完,说明依赖结构或脚本本身该重构,不是 timeout 的问题
最易被忽略的一点:process-timeout 对 HTTP 下载完全无效。看到 Downloading https:// 卡住,再怎么调它都没用——那得查 http-timeout、镜像源、PHP 的 default_socket_timeout,三者缺一不可。










