定位超时需分层:Resolving dependencies 是 DNS 问题,用 dig 检测并换 DNS 或 hosts;Downloading 才调 http-basic-timeout;Executing command 超时则调 process-timeout;中断后须清理 vendor/autoload.php、vendor/composer/ 并 clear-cache。

超时不是配置写错了,是网络链路或参数粒度没对上——必须先定位卡在哪一层,再动对应参数。
卡在 Resolving dependencies 是 DNS 问题,不是 timeout 能解决的
这一步 Composer 只做域名解析(比如查 mirrors.aliyun.com 的 IP),不发 HTTP 请求、不读代理、不认 http.timeout。
- 运行
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)是否误把mirrors.aliyun.com指向了127.0.0.1或错误 IP - 用手机热点试一次——很多企业网会屏蔽
packagist.org和 GitHub 域名,但热点通常直连通畅
卡在 Downloading 才该调 http-basic-timeout(Composer 2.2+)或 http.timeout(旧版)
只有到这一步,Composer 才真正发起 HTTP 请求,此时 http-basic-timeout 或 http.timeout 才起作用。它控制 DNS 解析、TLS 握手、首字节等待及整个 body 传输,默认 60 秒太短,国内常见首字节延迟高。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 临时生效:
composer install --http-basic-timeout=300(Composer 2.2+)或composer install --timeout=300(旧版) - 永久生效:
composer config -g http-basic-timeout 300(推荐)或composer config -g http.timeout 300 - 必须配合镜像源:先执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(注意末尾斜杠不能少) - 换源后必须执行
composer clear-cache,否则旧缓存仍会复用失败地址
卡在 Executing command 或整体 install/update 超时,得调 process-timeout
这步涉及 git clone、unzip、post-install-cmd 等子进程,由 process-timeout 控制,默认仅 300 秒,和 HTTP 请求无关。
- 临时绕过:
composer install --process-timeout=0(禁用)或composer install --process-timeout=1200(20 分钟) - 永久生效:
composer config -g process-timeout 1200 - 若已设为 0 仍失败,大概率是内存不足——检查 PHP
memory_limit是否 ≥ 1.5G,尤其update解析锁文件阶段 - 禁用 packagist.org 回源可防 fallback 拖慢:
composer config -g repo.packagist false
中断后重试前必须清理残留状态
Composer 没有断点续传,中断后残留的破损 ZIP、截断的 installed.json 或卡死的临时目录会持续干扰后续执行。
- 不要直接删整个
vendor/——这会导致autoload.php缺失,引发后续命令报错 - 精准清理:
rm vendor/autoload.php+rm -rf vendor/composer/,再运行composer dump-autoload→composer install - 若仍报
Failed to extract或Content-Length mismatch,说明缓存已坏,必须执行composer clear-cache
真正麻烦的从来不是“等多久”,而是中断后 vendor/ 里那些看似完整、实则校验失败的包文件——它们不会自己消失,也不会被自动跳过。

















