直接换国内镜像源并同步调高process-timeout和http-basic-timeout,可解决90%远程资源获取超时问题;卡在resolving dependencies是dns问题,需检查dns配置或hosts文件;卡在downloading才需调整http-basic-timeout。

直接换国内镜像源 + 调对两个超时参数,90% 的远程资源获取超时问题当场消失;别只调 process-timeout,http-basic-timeout 才是下载卡住时真正起作用的那个。
卡在 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)是否误把镜像域名指向了127.0.0.1 - 用手机热点试一次——很多企业网会屏蔽
packagist.org域名,但热点通常直连通畅
卡在 Downloading https://... 才该动 http-basic-timeout
只有到这一步,Composer 才真正发起 HTTP 请求下载 zip 包。此时 http-basic-timeout 控制单次连接+首字节等待+传输全过程,默认仅 60 秒,大包或镜像首字节延迟高时极易触发失败。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 全局设置:运行
composer config -g http-basic-timeout 300(单位秒,300=5 分钟) - 项目级更稳妥(尤其 CI):在
composer.json的"config"段加"http-basic-timeout": 300 - 注意:
http.timeout是 v1 废弃项,v2 完全不读;http-basic-timeout是 v2.2+ 正确键名 - 验证是否生效:运行
composer config -g http-basic-timeout,输出应为数字,不是null或报错
镜像源配置写错会静默失效,必须逐项核对
换源命令漏一个字符、少一个斜杠、类型写错,都会导致“看似成功”,实则完全没生效——日志里依然出现 packagist.org。
- 键名必须是
repos.packagist(复数repos),不是repo.packagist(v2.2+ 后已废弃) -
type值必须显式写成"composer",不能省略,也不能拼成"compose" - URL 必须是 HTTPS 且末尾带
/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会拼出非法路径/composerpackages.json) - 验证是否真生效:运行
composer config -g repos.packagist,输出必须是完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 换源后必须执行
composer clear-cache,否则旧缓存仍会复用失败地址
process-timeout 和 http-basic-timeout 必须同时调
前者管整个命令生命周期(含解压、脚本执行、autoload 生成),后者管每个 HTTP 下载请求。只调一个,大概率白等。
-
process-timeout推荐设为1200(20 分钟):运行composer config -g process-timeout 1200 -
http-basic-timeout推荐设为300~600(5~10 分钟):下载大 dist 包或镜像响应慢时很关键 - CI 环境建议用环境变量:
COMPOSER_PROCESS_TIMEOUT=1200,比命令行参数更能覆盖插件启动的子进程 - 值设为
0表示不限时,不建议——可能卡死无响应,排查更困难
最容易被忽略的是:镜像 URL 少一个斜杠、repos 写成 repo、项目 composer.json 里空 "repositories": [] 覆盖全局配置——这些错误不会报错,但会让所有超时调整全部失效。










