卡在resolving dependencies是dns问题,需换dns或测镜像连通性;卡在downloading https://才调http.timeout(建议600秒);卡在executing command则调process-timeout(建议1200秒);ipv6 fallback可能导致静默卡顿,可设composer_ipresolve=4强制ipv4。

直接调 http.timeout 和 process-timeout 是最有效的办法,但必须分清卡在哪一步——调错参数只会白等。
卡在 Resolving dependencies 是 DNS 问题,不是 timeout 能解决的
这一步 Composer 只做域名解析(比如查 mirrors.aliyun.com 的 IP),不发 HTTP 请求、不走代理、不读任何超时配置。
- 用
dig mirrors.aliyun.com @114.114.114.114看是否返回有效 IPv4 地址;若超时或无响应,说明本地 DNS 不可用或被污染 - 临时换 DNS:Linux/macOS 编辑
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否误把镜像域名指向了127.0.0.1 - 手机热点试一次——很多企业网会屏蔽
packagist.org和 GitHub 域名,但热点通常直连通畅
卡在 Downloading https:// 就该调 http.timeout
这是真正发起 HTTP 请求的阶段,curl error 28、反复 retry 后失败、或报 Connection timed out 都属于这一层。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
http.timeout控制 DNS 解析 + TLS 握手 + 首字节等待 + 整个 body 下载的总时间,默认仅 60 秒(Composer 2.x),弱网下极易触发 - 项目级最稳:
composer config http.timeout 600,写入当前composer.json的config段,可提交、可复现 - 全局生效:
composer config -g http.timeout 600,写入~/.composer/config.json - 临时覆盖优先级最高:
COMPOSER_HTTP_TIMEOUT=1200 composer install,适合 CI 调试 - ⚠️ 注意:
php -i | grep default_socket_timeout查出的 PHP CLIdefault_socket_timeout若低于你设的http.timeout,连接会被提前掐断——常见值是 60,务必同步调高
卡在 Executing command 或报 The process timed out 就该调 process-timeout
错误里一定含 [RuntimeException] The process "" exceeded the timeout,加 -vvv 能看到最后执行的命令,常见于 git clone、unzip、跑 post-install-cmd 脚本。
-
process-timeout控制整个composer install命令从开始到结束的总耗时上限,默认 300 秒,和 HTTP 完全无关 - 全局改:
composer config -g process-timeout 1800(30 分钟) - 项目级改:直接在
composer.json顶层加"config": {"process-timeout": 1200} - CI 环境建议用环境变量兜底:
COMPOSER_PROCESS_TIMEOUT=2000,某些 Composer 版本对它更敏感 - 设为 0 表示不限时,但不推荐——万一远程 Git 仓库彻底不可达,会无限挂起
IPv6 fallback 导致“卡住但不报错”最隐蔽
不是网络慢,而是 Composer 默认先尝试 IPv6 地址,超时(通常 1–3 秒)再 fallback 到 IPv4。上百个包叠加,就是几分钟无响应。
- 验证方法:
curl -v https://packagist.org 2>&1 | grep "Connected to",看到类似Connected to packagist.org (2a03:2880:...)且后续卡住,基本就是它 - 强制用 IPv4:
export COMPOSER_IPRESOLVE=4(Linux/macOS)或set COMPOSER_IPRESOLVE=4(Windows) - 禁用 IPv6 解析(Linux):
echo 'precedence ::ffff:0:0/96 100' | sudo tee -a /etc/gai.conf - 注意:这个现象不会报错,只表现为长时间静默,容易误判为“网络慢”,其实只是 DNS 解析策略拖慢了整体流程










