卡在loading composer repositories不是超时问题,而是dns解析失败或tls握手卡住;需验证镜像连通性、检查系统dns、确认镜像配置正确(如composer config -g repos.packagist)、清除缓存,并用curl -i测试镜像响应。

卡在 Loading composer repositories 就不动?先别调 timeout
这根本不是超时问题,而是 DNS 解析或基础连通性失败。Composer 还没开始发 HTTP 请求,http.timeout 完全不生效。
常见现象:Could not resolve host repo.packagist.org、unknown host、ping packagist.org 失败。
- 手动验证镜像连通性:
curl -I https://mirrors.aliyun.com/composer/packages.json,必须秒回200 OK - 检查系统 DNS:Linux/macOS 看
/etc/resolv.conf,Windows 查网络适配器 DNS 设置;临时换为114.114.114.114或8.8.8.8 - 排查
/etc/hosts(Windows 是C:\Windows\System32\drivers\etc\hosts)是否误写了packagist.org的错误 IP - 确认镜像地址已正确写入:
composer config -g repos.packagist.org.url输出必须是https://mirrors.aliyun.com/composer/(末尾不能带斜杠)
报 cURL error 28 或卡在 Downloading https://?这才是 http.timeout 的事
这一阶段 Composer 正在拉取 metadata 或 ZIP 包,错误本质是单次 HTTP 请求耗时超限——从 DNS 查询、TCP 连接、TLS 握手到响应头返回的总时间,默认仅 60 秒,对国内链路明显不够。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 全局设置(推荐):
composer config -g http.timeout 600(单位秒,300~600 足够) - 项目级更安全(尤其 CI):在
composer.json的"config"段加"http": {"timeout": 600} - 临时调试优先用环境变量:
COMPOSER_HTTP_TIMEOUT=600 composer install,避免污染配置 - PHP 自身 socket 限制可能干扰:
php -i | grep default_socket_timeout,若值为 60,可绕过:php -d default_socket_timeout=600 $(which composer) install
用了代理却还是超时?Composer 不认 HTTP_PROXY 环境变量
v2.2+ 版本才默认支持环境变量代理,旧版或某些 CI 环境下它完全被忽略。直连失败后卡在 TLS 握手,错误看起来像超时,实则是代理未生效。
- 显式配置代理(必须):
composer config -g http.proxy http://127.0.0.1:8888(HTTP 代理)或https://127.0.0.1:8888(HTTPS 代理) - 带认证格式:
http://user:pass@127.0.0.1:8888 - 自签名证书必须指定:
composer config -g cafile /path/to/your-proxy-root.pem - CI 中注意:Docker 容器内
cafile路径需挂载且可读;GitHub Actions 必须显式composer config -g http.proxy,不能只靠环境变量
换了镜像还慢或超时?可能根本没走镜像
镜像只加速 dist(ZIP/TAR)包的 metadata 查询和下载,对 source(Git clone)完全无效。只要 composer.json 里有 "prefer-source": true、私有 Git 仓库或硬编码了 "type": "git",Composer 就会 fallback 直连 GitHub/GitLab,触发原生 Git 超时。
- 检查是否启用了 source 模式:
composer show vendor/package --all | grep -A5 source - 强制走 dist:
composer config -g preferred-install {"*":"dist"},或在项目composer.json的config段加"preferred-install": {"*":"dist"} - 禁用 GitHub API(减少请求跳转):
composer config -g use-github-api false - Git 层超时要单独设:
git config --global http.timeout 300、git config --global http.postBuffer 524288000










