composer必须同时配置http-proxy和https-proxy,缺一则https请求直连失败;https-proxy值须为http://开头,且镜像与代理不可共存,验证需用composer config -g --list | grep -e "(http|https)-proxy"。

composer config -g http-proxy 和 https-proxy 必须同时设置
Composer 不读取系统级的 HTTP_PROXY 或 HTTPS_PROXY 环境变量,只认自己配置里的两个字段:http-proxy 和 https-proxy。漏掉任意一个,尤其是 https-proxy,会导致所有 HTTPS 请求(比如访问 packagist.org) fallback 到直连,现象是卡在 Loading composer repositories 或 Resolving dependencies,无报错、无超时提示。
正确做法是两条命令都执行:
composer config -g http-proxy http://127.0.0.1:8080composer config -g https-proxy http://127.0.0.1:8080
注意:https-proxy 的值必须以 http:// 开头,哪怕你的代理服务监听的是 HTTPS 端口(如 https://127.0.0.1:8443),填 https:// 或省略协议头都会静默失效。
镜像源和代理不能共存
设了 repo.packagist 镜像后,http-proxy 和 https-proxy 就完全被忽略——两者作用层面不同,混用会卡死或 TLS 握手失败。国内用户 90% 的“Loading composer repositories 卡住”,根源就是既配了阿里云/腾讯云镜像,又留着代理配置。
想走代理,必须先清空镜像:
-
composer config -g --unset repo.packagist(注意不是repos.packagist或packagist.org) - 再执行上面两条
config -g命令配代理 - 验证:运行
composer config -g --list | grep -E "(http|https)-proxy",确保两行都输出且 URL 格式正确
代理认证、特殊字符和 NTLM 场景
用户名或密码含 @、/、: 时,必须 URL 编码,否则解析失败。例如密码 pa@ss/word 要写成 pa%40ss%2Fword,可用这条命令生成:php -r "echo rawurlencode('pa@ss/word');"。
Windows 域环境常见 NTLM 代理,Composer 原生不支持。遇到 407 Proxy Authentication Required,不能靠改 Composer 配置解决,得用 cntlm 或 px 在本地起中转代理(监听 127.0.0.1:3128),再让 Composer 连这个地址。
临时验证是否真走代理:加 -n -vvv 运行 composer install,日志里出现 Proxy CONNECT 才算成功。
腾讯云服务器上优先换镜像,不是配代理
腾讯云 CVM 默认走公网,但卡顿主因通常是 DNS 解析慢或海外节点握手延迟,不是网络不通。直接切腾讯云官方镜像比配代理更稳更快:
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 即可。如果公司网络策略强制所有 HTTPS 流量过代理(哪怕用了镜像),那仍需配 https-proxy,否则连不上镜像站本身。











