根本原因是composer默认不读http_proxy环境变量,必须同时配置http-proxy和https-proxy两个字段,且https-proxy必须为http://协议;漏配或协议错误会导致https请求直连失败而卡在resolving dependencies。

composer install 为什么卡在 Resolving dependencies
根本原因不是网络不通,而是 HTTPS 请求没走通——composer install 默认不读 HTTP_PROXY 环境变量,只认自己配置的 http-proxy 和 https-proxy 两个字段,且必须同时存在、协议一致。漏掉 https-proxy,所有对 https://packagist.org 的请求都会 fallback 到直连,表现就是卡住、无报错、偶尔抛 cURL error 35 或 Failed to decode response。
常见误操作包括:
- 只执行
composer config -g http-proxy http://127.0.0.1:8080,漏掉https-proxy - 把
https-proxy写成https://127.0.0.1:8080(Composer 不支持https://协议的代理地址) - 代理需要认证,但密码含
@或/没做 URL 编码,比如pa@ss/word应写为pa%40ss%2Fword
全局代理配置的正确命令组合
必须两条一起执行,顺序无关,但缺一不可:
composer config -g http-proxy http://127.0.0.1:8080composer config -g https-proxy http://127.0.0.1:8080
如果代理带认证,统一用 http://user:pass@127.0.0.1:8080 格式;若端口是 8443 且监听 TLS,也得强制写成 http:// 协议——这是 Composer 的硬性约定,不是 bug。
验证是否生效:
-
composer config -g --list | grep -E "(http|https)-proxy"—— 输出里必须同时出现两行,且值格式正确 - 再跑一次
composer clear-cache,避免旧缓存干扰
腾讯云 CVM 上别急着配代理,先切镜像
你在腾讯云服务器上跑 composer install 卡住,90% 不是代理问题,而是 DNS 解析慢或 TLS 握手卡在海外节点。直接换官方镜像,比配代理更稳更快:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/composer clear-cache
验证是否生效:composer show laravel/framework --no-ansi | head -n 3,看到 URL 含 mirrors.cloud.tencent.com 就说明成功了。这个镜像全量同步、走内网直连,不需要任何代理进程或额外权限。
NTLM 代理或公司级防火墙怎么办
Composer 原生不支持 NTLM 认证,设了 http-proxy 也会返回 407 Proxy Authentication Required。这时候不能硬配,得加一层中转:
- Windows 域环境推荐用
cntlm或px,让它们监听127.0.0.1:3128并处理 NTLM - 再把 Composer 的
http-proxy和https-proxy都指向http://127.0.0.1:3128 - 临时验证:用
curl -x http://127.0.0.1:3128 -I https://packagist.org/packages.json看是否能通
注意:别指望改 HTTP_PROXY 环境变量能绕过,Composer 明确忽略它——这点很多人反复踩坑。











