应同时调高http.timeout和process-timeout:前者控制http下载(如拉packages.json、zip包),默认300秒,弱网下需设为600或更高;后者控制git clone、unzip等子进程,默认300秒,需设为1200或更高,二者缺一不可。

直接改 http.timeout 和 process-timeout,缺一不可——前者管下载包、拉 packages.json 这类 HTTP 请求,后者管 git clone、unzip、post-install-cmd 这类子进程,两者默认都是 300 秒,弱网或大项目下必然撞墙。
卡在 Downloading https://... 就调 http.timeout
错误里带 cURL error 28、反复 retry 或提示 “failed to open stream” 时,说明 HTTP 层卡住了。它不看 process-timeout,只认 http.timeout(Composer 2.x)。
- 项目级最稳:
composer config http.timeout 600,写入当前composer.json的"config"段,可提交、可复现 - 全局生效:
composer config -g http.timeout 600,写入~/.composer/config.json - 临时覆盖优先级最高:设环境变量
COMPOSER_HTTP_TIMEOUT=1200再跑命令,适合 CI 调试 -
注意:PHP 的
default_socket_timeout(查法:php -i | grep default_socket_timeout)若低于你设的http.timeout,连接会被 PHP 提前掐断——常见默认值是 60,务必同步调高
报 The process timed out 就调 process-timeout
错误里明确含 [RuntimeException] The process "" exceeded the timeout,加 -vvv 能看到最后执行的那条命令(比如 git clone 或 php artisan config:cache),这就不是网络问题,是子进程执行太久被杀。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 临时绕过:
composer install --process-timeout=0(禁用)或--process-timeout=1200(20 分钟) - 全局永久改:
composer config -g process-timeout 1200 - 项目级改:直接在
composer.json顶层加"config": {"process-timeout": 1200} - 若已设为 0 仍失败,大概率是内存不足——检查 PHP
memory_limit是否 ≥ 1.5G,尤其update解析锁文件阶段最吃内存
别漏掉 http-basic-timeout(Composer 2.2+)
这个参数控制单次 HTTP 请求的连接 + 读取时限,默认仅 60 秒,比 http.timeout 更细粒度。当镜像源响应慢但整体流程没超时(比如拉一个大 ZIP 包卡住),就得它来兜底。
- 全局设:
composer config -g http-basic-timeout 300 - 命令行临时用:
composer update --http-basic-timeout=300 - 注意:旧版 Composer 不支持该参数,强行加会报错 unrecognized option
真正卡住的时候,往往不是单一参数的问题——DNS 慢、镜像未切、GitHub Token 缺失、PHP 内存不够、CI 工作目录不对,都可能伪装成 timeout。先用 composer diagnose 粗筛,再结合错误里出现的具体关键词(如 cURL error 28、exceeded the timeout、API rate limit)定位到那一层,才动对应配置。










