镜像源与代理互斥,设镜像后代理自动失效;需先清空镜像(composer config -g --unset repo.packagist),再同时配置http-proxy和https-proxy,且https-proxy值必须以http://开头并url编码特殊字符。

不能通过代理“同步”镜像源——镜像站的同步是服务端行为,客户端无权触发;你真正能控制的,只有 Composer 如何通过代理访问已配置的镜像地址。
为什么composer config设了镜像还走不了代理
镜像源和代理互斥:一旦设置了 repo.packagist(如阿里云、清华源),Composer 就直接连那个 HTTPS 地址,完全忽略 http-proxy 和 https-proxy 配置。这不是 bug,是设计逻辑。
- 验证是否真用了镜像:运行
composer config -g repo.packagist,输出非空 JSON 表示镜像生效,此时代理字段被静默跳过 - 想走代理,必须先清掉镜像:
composer config -g --unset repo.packagist - 清完再配代理,且必须同时设两个字段:
http-proxy和https-proxy,缺一不可 -
https-proxy的值必须以http://开头(哪怕代理监听的是 HTTPS 端口),填https://或漏协议头会静默 fallback 到直连
https-proxy 值写错的典型表现和修复
填错 https-proxy 是最常导致“卡在 Loading composer repositories”却无报错的原因。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 错误写法:
https://127.0.0.1:8080、127.0.0.1:8080、http://user:pa@ss/word@127.0.0.1:8080 - 正确写法:
http://127.0.0.1:8080;带认证时用户名/密码中含@、/、:必须 URL 编码,例如pa@ss/word→pa%40ss%2Fword - 生成编码命令:
php -r "echo rawurlencode('pa@ss/word');" - 临时验证是否走代理:加
-n -vvv运行composer install,日志里出现Proxy CONNECT才算成功
公司 NTLM 代理下如何让 Composer 连镜像
Composer 原生不支持 NTLM 认证,直接配 http-proxy 会卡在 407 Proxy Authentication Required 或超时。
- 必须本地起中转代理,如
cntlm或px,监听127.0.0.1:3128并完成 NTLM 握手 - 然后让 Composer 连这个本地地址:
composer config -g http-proxy http://127.0.0.1:3128和composer config -g https-proxy http://127.0.0.1:3128 - 镜像 URL(如
https://mirrors.tuna.tsinghua.edu.cn/composer/)必须能被该中转代理解析和转发 - 检查链路是否通:
curl -x http://127.0.0.1:3128 -I https://mirrors.tuna.tsinghua.edu.cn/composer/packages.json
镜像地址本身也要能被代理访问
很多人以为“配了镜像就不用代理”,其实不是。镜像仍是 HTTPS 地址,若企业策略强制所有 HTTPS 流量过代理,没配 https-proxy 一样连不上。
- 典型请求链路:
composer → https-proxy → 公司 NTLM 代理 → 镜像服务器 - 确保镜像域名可被代理 DNS 解析:
nslookup mirrors.tuna.tsinghua.edu.cn - 若镜像返回
403 Forbidden,大概率是代理拦截了 User-Agent 或 Referer,需联系网络管理员放行 - TLS 握手失败常见于证书不被信任,可指定 CA:
composer config -g cafile /path/to/your-root.pem
关键点在于:镜像同步不归你管,但访问镜像的路径、协议、认证和 TLS 环境,每一环都可能断在你看不见的地方。最容易被忽略的是 https-proxy 协议头必须为 http://,以及 NTLM 场景下必须用本地中转代理——这两处错一个,就全程静默失败。










