必须同时配置http-proxy和https-proxy,且https-proxy值必须以http://开头;漏配任一字段会导致HTTPS请求静默直连,卡在“Loading composer repositories”无报错。

代理配错导致“Loading composer repositories”卡住怎么办
Composer 不读系统 HTTP_PROXY 环境变量,只认自己配置的 http-proxy 和 https-proxy 两个字段。漏配或填错其中任意一个,就会静默 fallback 到直连——现象是卡在 “Loading composer repositories”,没报错也没进度。
-
https-proxy必须是http://开头(哪怕代理监听 HTTPS 端口),填https://或不带协议会失败 - 密码含
@、/、:必须 URL 编码,比如pa@ss/word→pa%40ss%2Fword - 公司 NTLM 代理(如 Windows 域环境)原生不支持,必须用
cntlm或px中转,再让 Composer 连本地127.0.0.1:3128 - 验证是否生效:运行
composer config -g --list | grep -E "(http|https)-proxy",确认两行都存在且格式正确
如何彻底清除代理配置
别只删 http-proxy,https-proxy 很可能还残留着。全局配置必须用 -g 显式清除:
- 清空 HTTP 代理:
composer config -g --unset http-proxy - 清空 HTTPS 代理:
composer config -g --unset https-proxy - 检查是否还有残留:
composer config -g --list,确认输出里不再出现http-proxy或https-proxy - 如果提示
Could not write to file,说明%APPDATA%\Composer\config.json(Windows)或~/.composer/config.json(Linux/macOS)不可写,需手动检查目录权限
临时禁用代理比删除更安全
不想动全局配置?可以用环境变量临时覆盖:
- Linux/macOS:
HTTP_PROXY= HTTPS_PROXY= composer install -vvv - Windows:
set HTTP_PROXY= & set HTTPS_PROXY= & composer install -vvv - 这能绕过所有 Composer 内部代理逻辑,直接走系统网络栈,适合快速验证是不是代理本身的问题
- 配合
-vvv可看到真实 DNS 解析和 TLS 握手过程,卡在哪一目了然
换源后仍卡在“Could not resolve host”怎么修
换阿里云镜像后还报这个错,说明问题不在 Packagist,而在你的 DNS 或 hosts 绑定:
- 先运行
curl -I https://mirrors.aliyun.com/composer/,看是否返回HTTP/2 200;返回403或502就得换镜像 - 检查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows),删掉所有指向packagist.org或github.com的行 - 临时改 DNS:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf(Linux)或在系统网络设置里手动指定 - 企业网下反复出现
Connection reset by peer,大概率是 NAT 中间设备 RST,可加CURL_OPTIONS="--no-keepalive"临时缓解
代理配置不是开关式操作,http-proxy 和 https-proxy 是两条独立通路,缺一不可;而真正卡住的地方,往往藏在 curl -I 返回的状态码和 composer install -vvv 输出的第三行(HTTP status code)里。











