Composer代理必须同时配置http-proxy和https-proxy,缺一则因Packagist全量走HTTPS而fallback直连,导致“Loading composer repositories”卡住;https-proxy值须为http://开头,认证符需URL编码,且镜像与代理不可混用。

Composer 代理必须同时配 http-proxy 和 https-proxy,缺一不可;否则 composer install 会卡在 “Loading composer repositories”,且无明确报错。
为什么只设 http-proxy 还是连不上 Packagist
Packagist 全量走 HTTPS,而 http-proxy 只处理 HTTP 请求,https-proxy 才负责建立 CONNECT 隧道转发 HTTPS 流量。漏掉后者,Composer 会 fallback 到直连,结果就是静默超时、cURL error 28 或卡住不动。
-
https-proxy的值必须以http://开头(不是https://),哪怕你的代理服务监听的是 TLS 端口 - 填
127.0.0.1:8080或https://127.0.0.1:8080都会导致静默失效 - 认证信息含
@、/、:必须 URL 编码,例如密码pa@ss/word→pa%40ss%2Fword - 命令必须加
-g(全局),否则只写入当前项目composer.json,换目录即失效
验证代理是否真正生效
别靠 composer install 是否成功来判断——它可能因缓存、镜像残留或 fallback 直连而“看似成功”。真正有效的验证方式是:
- 运行
composer config -g --list | grep -E "(http|https)-proxy",确认两行都存在且格式正确 - 加
-n -vvv执行composer install,日志中出现Proxy CONNECT才算走通 - 手动用
curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json验证代理连通性 - 若公司用 NTLM 代理(如 Windows 域环境),
curl也报407 Proxy Authentication Required,说明需先上cntlm或px中转
镜像和代理不能共存
设了 repo.packagist 镜像后,http-proxy 和 https-proxy 字段会被完全忽略。混配会导致 “Loading composer repositories” 卡死、TLS 握手失败或静默失败。
- 想用代理:先清空镜像
composer config -g --unset repo.packagist - 想用镜像(推荐腾讯云/阿里云):执行
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/,再composer clear-cache - 即使用了镜像,若企业网络强制所有 HTTPS 流量过代理,仍需配
https-proxy——镜像地址仍是 HTTPS - 代理不支持 mTLS 私有源,但镜像完全不支持;要连私有 mTLS 源,只能走代理
最易被忽略的点:腾讯云 CVM 上绝大多数“卡住”问题,根源不是网络不通,而是 DNS 解析慢或 TLS 握手卡在海外节点。直接切镜像比配代理更稳——除非你明确需要代理透传 mTLS 或绕过特定策略。


















