Composer只配http-proxy仍连不上Packagist,因其仓库全量走HTTPS,而http-proxy仅处理HTTP请求,HTTPS请求必须依赖https-proxy字段(值须为http://协议)才能建立CONNECT隧道;缺一则HTTPS请求被直连拦截或超时。

Composer 不会自动读取系统 HTTP_PROXY 环境变量,必须显式配置 http-proxy 和 https-proxy 两个字段,缺一不可;否则 composer install 会卡在 “Loading composer repositories” 且无明确报错。
为什么只配 http-proxy 还是连不上 Packagist?
Packagist、GitHub 等仓库全量走 HTTPS,而 Composer 对 http-proxy 和 https-proxy 是分开路由的:前者只用于 HTTP 请求,后者才用于 HTTPS 的 CONNECT 隧道。漏掉 https-proxy,实际请求仍被直连拦截或超时。
-
https-proxy的值必须是http://开头(不是https://),即使代理本身监听 TLS 端口——这是 Composer 的硬性约定 - 命令要加
-g(等价于--global),否则只写入当前项目composer.json,换目录就失效 - 验证是否生效:运行
composer config -g --list | grep -E "(http|https)-proxy",确认两行都存在且 URL 格式正确
https-proxy 值填错的典型现象和修复
填成 https://127.0.0.1:8080 或漏协议头(如 127.0.0.1:8080)会导致静默失败:没有错误提示,但所有 HTTPS 请求都 fallback 到直连,最终超时或 502。
- 正确写法永远是
http://127.0.0.1:8080(或带认证:http://user:pass@127.0.0.1:8080) - 密码含
@、/、:必须 URL 编码,例如密码pa@ss/word→pa%40ss%2Fword,可用php -r "echo rawurlencode('pa@ss/word');"快速生成 - Windows 下注意路径权限:若
composer config -g报Could not write to file,检查%APPDATA%\Composer\config.json目录是否存在且可写
公司用 NTLM 代理(比如 Windows 域环境)怎么办?
Composer 原生不支持 NTLM 认证,设了 http-proxy 也会直接返回 407 Proxy Authentication Required 或 Unable to connect to http://repo.packagist.org。
- 不能靠改 Composer 配置解决,必须引入中转代理工具,例如
cntlm或px,让它们监听127.0.0.1:3128并处理 NTLM,再让 Composer 连这个本地地址 - 临时验证是否是 NTLM 问题:执行
curl -x http://127.0.0.1:3128 -I https://packagist.org/packages.json,如果 curl 也报 407,说明中转层没配好 - 别指望
HTTP_PROXY环境变量能绕过——Composer 明确忽略它,只认自己的http-proxy字段
代理配好了还是慢或失败,怎么快速定位?
现象一致(卡住、超时、无报错),但原因可能在任意一层:本地代理进程未启动、防火墙拦截、中间网关策略、甚至 DNS 解析失败。不能只看 Composer 日志。
- 逐层验证:先
curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json,确认代理链路通;再composer diagnose检查基础环境;最后composer install -vvv看具体卡在哪条 URL - 企业内网常见陷阱:代理白名单没开
packagist.org或github.com,或者强制 HTTPS 拦截但没把代理 CA 证书导入 PHP 的信任库,导致cURL error 60 - 镜像源和代理不能共存:如果已配置阿里云镜像(
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/),再设代理反而增加故障点
真正难的不是写那两条 composer config 命令,而是当它“看起来没报错却不动”时,得意识到问题大概率不在 Composer 配置本身,而在代理服务状态、认证方式、或网络策略这些外部环节。


















