composer读取代理需执行composer config -g http-proxy和https-proxy验证,二者必须均输出有效url;漏配https-proxy、未加-g参数、镜像源与代理共存或代理不支持https隧道均会导致配置失效。

确认代理是否真被 Composer 读取
Composer 不自动继承 HTTP_PROXY 环境变量(v2.2+ 默认启用但极易被覆盖),设了环境变量却没效果,大概率是它根本没读到。最直接的验证方式是运行:
composer config -g http-proxy
和
composer config -g https-proxy
如果都输出为空,说明代理配置压根没写进 Composer 的全局 config。
-
http-proxy只对 HTTP 请求生效,https-proxy才管 HTTPS —— 而packagist.org全量走 HTTPS,漏配https-proxy就等于没配 - 命令必须带
-g,否则只改当前项目,容易误判 - Windows 用户若提示权限错误,换管理员 CMD 或 PowerShell 再试
用 curl -x 验证代理隧道能力
很多本地代理(Clash、Charles、旧版 Squid)不支持 HTTPS 的 CONNECT 隧道,导致 Composer 卡在 TLS 握手或静默超时。别靠猜,直接测:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json
如果返回 HTTP/1.1 200 OK,说明隧道通;如果报 Failed to connect 或卡住,就是代理不支持 HTTPS 隧道。
- Clash 用户检查规则里是否有
DOMAIN-SUFFIX,packagist.org,PROXY - Squid 用户确认
connect_ports包含 443 - 临时绕过:把镜像源切回
http://packagist.org(仅调试,不安全)
排查 TLS 证书干扰
企业代理或 Fiddler/Charles 常用自签名 CA,Composer 默认不信任,错误常表现为 cURL error 28 或直接 Connection refused,日志里却看不到证书相关提示。
- 先下载代理根证书(如
fiddler-root.cer),转成 PEM 格式后执行:composer config -g cafile /path/to/fiddler-root.pem - 同步调高连接容忍度:
composer config -g http.connect_timeout 60和composer config -g http.timeout 600 - WSL2 用户务必运行
sudo hwclock -s同步主机时间,时间不同步会导致 TLS 握手失败 - 禁用 Git SSH 协议干扰:
composer config -g github-protocols ["https"]
镜像源与代理互斥,别同时开
一旦设置了 repo.packagist.org.url(比如阿里云镜像),Composer 就直连镜像站,http-proxy 和 https-proxy 自动失效——你不可能一边走镜像一边走代理。
- 验证是否用了镜像:
composer config -g repo.packagist应返回类似https://mirrors.aliyun.com/composer/ - 如果返回
https://packagist.org,说明镜像没生效;如果返回镜像地址,那代理配置就完全不起作用 - 想用代理,必须清掉镜像:
composer config -g --unset repos.packagist.org.url - 镜像站本身不参与 TLS 双向认证(mTLS),只有连真实 packagist.org 或私有 Packagist 且启用了 mTLS 时,才需要代理介入
真正卡住的地方,往往不是 Composer 本身,而是代理是否支持 HTTPS 隧道、证书是否被信任、镜像和代理有没有互相覆盖——这三个点漏查一个,调试就白费功夫。










