The process timed out 错误源于本地命令(如 git clone、unzip、post-install-cmd)卡住,非网络慢;调大 process-timeout 可验证,但设为 0 易掩盖权限、SSH、symlink 等真实问题。

直接说结论:The process timed out 错误不是网络慢,而是 git clone、unzip 或 post-install-cmd 脚本这类本地命令卡住了,Composer 主动 kill 掉了它。调大 process-timeout 是最快验证手段,但盲目设为 0 很可能掩盖真实问题。
为什么 --process-timeout=0 不一定管用
这个参数只影响当前命令行的一次执行,且不覆盖插件、自定义 installer 或 CI 环境中启动的子进程。很多 CI 流水线(如 GitHub Actions)每次都是干净容器,环境变量没生效,--process-timeout 就等于白加。
-
COMPOSER_PROCESS_TIMEOUT=0才是真正全局生效的环境变量,推荐在 CI 脚本开头就写上 - Windows 用户用
set COMPOSER_PROCESS_TIMEOUT=600(cmd)或$env:COMPOSER_PROCESS_TIMEOUT=600(PowerShell) - 设为 0 表示无限等待,但会掩盖权限错误、SSH 密钥缺失、挂载卷 symlink 解析失败等真问题
process-timeout 和 http.timeout 完全不是一回事
很多人把两者混着调,结果改了半天还是报错。它们控制的是完全不同的阶段:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
process-timeout:控制git、unzip、php scripts/xxx.php这类本地命令单次执行最大秒数,默认 300 -
http.timeout:控制 HTTP 请求(比如拉取composer.json元数据或 zip 包)的连接+响应总时间,默认 300(Composer 2.2+ 后叫http-basic-timeout) - 如果看到
cURL error 28: Operation timed out after 300000 milliseconds,说明是 HTTP 层超时,process-timeout根本不生效
哪些情况调 timeout 是掩耳盗铃
调高超时只是让 Composer 多等一会儿,但卡点本身没解决。以下场景优先排查根本原因,而不是加时间:
-
git clone卡住:检查是否用了git@地址但没配 SSH 密钥,或公司防火墙拦截git://→ 改用 HTTPS 源,或运行git config --global url."https://".insteadOf git:// - 解压失败:某些 Windows 环境下 7z 权限异常 → 用
composer config --global archive-format zip强制走 PHP 原生解压 -
post-install-cmdhang 住:脚本里调了未安装的全局命令(如php-cs-fixer),或写了readline()类交互式输入 → 加--no-interaction或改非交互模式 - 生成 autoload 卡住:尤其在 WSL2 或 Docker for Mac 的 NTFS 挂载路径下,大量 symlink 导致扫描极慢 → 临时跳过:
composer install --no-autoloader,再手动跑composer dump-autoload --optimize
Docker / CI 环境下必须注意的三点
资源受限环境里,光调 timeout 没用,得配合基础检查:
- 确认容器内存是否够用:
docker stats看实际占用,vendor/解压和 autoload 生成吃内存很猛 - 避免在
post-install-cmd里执行构建前端、生成缓存等重操作 —— 这些该拆到独立 CI 步骤 - 私有 GitLab/GitHub 源若启用了慢速 SSH 认证,会卡在
git clone阶段 → 配置git config --global core.sshCommand "ssh -o ConnectTimeout=10"
最常被忽略的是:超时本身不是错误,只是信号。它提示你某个进程“等不到结果”,而真正要查的是那个进程卡在哪一步 —— 加 -vvv 看最后输出的命令,再结合 ps aux | grep 或 strace(Linux)定位卡点。

















