答案是composer只认自身配置的http-proxy和https-proxy字段,缺一或格式错误会导致代理失效:必须同时配置且https-proxy值须为http://开头,密码特殊字符需url编码,ntlm代理需用cntlm等中转工具。

Composer 不读系统环境变量,只认自己配置的 http-proxy 和 https-proxy 两个字段;漏配任一、协议写错、值格式不对,都会导致 composer install 卡在 “Loading composer repositories” 或报 cURL 错误,且无明确提示。
为什么只设 http-proxy 还是连不上 Packagist
Packagist、GitHub 等所有官方仓库地址都是 HTTPS,而 Composer 对 HTTP 和 HTTPS 请求走完全不同的代理路由:
-
http-proxy只处理纯 HTTP 请求(极少用到) -
https-proxy才用于 HTTPS 的 CONNECT 隧道——这是必须项 - 缺
https-proxy,Composer 会静默 fallback 到直连,结果就是超时、502、或卡住不动
典型现象:composer install -vvv 日志停在 Downloading https://repo.packagist.org/packages.json,几秒后报 cURL error 35 或直接中断。
https-proxy 的值必须是 http:// 开头
这是 Composer 的硬性约定,哪怕你的代理本身监听的是 TLS 端口(比如 https://127.0.0.1:8443),也必须写成 http:// 协议:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- ✅ 正确:
http://127.0.0.1:7890、http://user:pass@127.0.0.1:7890 - ❌ 错误:
https://127.0.0.1:7890、127.0.0.1:7890、socks5://127.0.0.1:7891(除非 Composer ≥ 2.2 且明确支持) - 密码含
@、/、:必须 URL 编码,例如pa@ss/word→pa%40ss%2Fword,可用php -r "echo rawurlencode('pa@ss/word');"快速生成
全局代理必须两条命令一起执行
用 composer config -g 设置,不能只设一个,也不能手改 ~/.composer/config.json(易权限出错):
composer config -g http-proxy http://127.0.0.1:7890composer config -g https-proxy http://127.0.0.1:7890- 验证是否生效:
composer config -g --list | grep -E "(http|https)-proxy",输出里必须同时出现两行 - Windows 下若报
Could not write to file,检查%APPDATA%\Composer\config.json目录是否存在且可写
注意:不加 -g 参数只会写入当前项目 composer.json 的 config 段,换目录就失效。
NTLM 代理或公司内网怎么办
Composer 原生不支持 NTLM 认证,设了 http-proxy 也会返回 407 Proxy Authentication Required。此时不能靠改 Composer 配置解决:
- 必须引入中转代理工具,如
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,如果也报 407,说明中转层没配通 - 别指望
HTTP_PROXY环境变量能绕过——Composer 明确忽略它
真正容易被忽略的是:很多企业已有腾讯云、阿里云等全量镜像,走内网直连比配代理更稳更快;代理只是兜底方案,不是首选路径。










