composer install 卡在“loading composer repositories”主因是直连 packagist.org 全链路受阻,必须显式配置 http/https 代理(如 http://127.0.0.1:7890)或镜像源,且代理与镜像不可共存。

为什么 composer install 卡在 “Loading composer repositories”
这通常不是 Composer 本身慢,而是它默认直连 packagist.org(国内 DNS 解析+TCP 建连+TLS 握手全链路受阻)。代理不是“锦上添花”,是绕过网络策略的刚需。直接改全局配置比每次加 -vvv 看日志更可靠。
- 别用 HTTP 代理——Composer 100% 走 HTTPS,HTTP 代理会返回
502 Bad Gateway或静默超时 - 别信“自动检测系统代理”——Composer 不读系统环境变量
http_proxy,必须显式配置 - 代理地址必须带协议和端口,例如
http://127.0.0.1:7890,漏掉http://会导致Invalid URI
用 composer config 全局设代理(推荐)
这是最稳的方式:一次配置,所有项目生效,且不污染项目级 composer.json。注意它写入的是当前用户的全局配置文件(~/.composer/config.json),不是项目根目录下的那个。
- 设 HTTP/HTTPS 代理(必须都设,否则部分请求仍走直连):
composer config -g repo.packagist.org.proxy http://127.0.0.1:7890 composer config -g repo.packagist.org.ssl-proxy http://127.0.0.1:7890
- 如果代理支持 SOCKS5(如 Clash 的 TUN 模式),可改用:
socks5://127.0.0.1:7891,但需确认 Composer 版本 ≥ 2.2(旧版不识别socks5://) - 取消代理只需执行:
composer config -g --unset repo.packagist.org.proxy和composer config -g --unset repo.packagist.org.ssl-proxy
代理配对失败的典型报错和排查点
配了代理还卡住?大概率是协议或证书问题。Composer 日志里不会直接说“代理连不上”,而是表现为超时或 TLS 错误。
-
file_get_contents(): SSL operation failed→ 代理未正确转发 TLS 流量,或本地 CA 证书不被信任;换用http://代理(非 HTTPS)可绕过此问题 -
Connection refused或No route to host→ 代理进程没开、端口填错、或防火墙拦截;用curl -x http://127.0.0.1:7890 https://packagist.org/packages.json手动验证 - 只加速了
composer install,但composer create-project仍慢 → 这个命令内部会先访问https://repo.packagist.org/packages.json,同样走上述代理配置,检查是否漏配ssl-proxy
公司内网或 CI 环境下不建议用代理的场景
有些企业镜像站(如阿里云、腾讯云 Packagist 镜像)已提供完整同步,且走内网直连,这时候配代理反而多一层故障点。
- 优先切换镜像源:
composer config -g repo.packagist.org.url https://mirrors.aliyun.com/composer/ - 镜像源 + 代理不要共存——两者逻辑冲突,Composer 会优先走镜像 URL,代理配置被忽略
- CI 环境中若使用 Docker,代理需透传进容器(如
docker run -e HTTP_PROXY=...),仅宿主机配了没用










