Composer卡在“Loading composer repositories”主因是未正确配置http-proxy和https-proxy,二者缺一不可;必须全局设置、协议头完整(http://)、密码URL编码,并通过composer config -g --list验证生效。

Composer 卡在 “Loading composer repositories” 基本就是代理没配对,不是慢,是根本连不出去。 它默认直连 packagist.org,而国内 DNS 解析、TLS 握手、TCP 建连全链路受阻,光调超时或换镜像源都救不了——必须显式设好 http-proxy 和 https-proxy 两个字段,缺一不可。
为什么只配 http-proxy 还卡住?
因为 Packagist 全量走 HTTPS,而 Composer 对代理是严格分路由的:http-proxy 只管 HTTP 请求,https-proxy 才负责建立 CONNECT 隧道转发 HTTPS 流量。漏掉 https-proxy,所有 HTTPS 请求会 fallback 到直连,结果就是静默超时或 502 Bad Gateway。
-
https-proxy的值必须是http://开头(比如http://127.0.0.1:7890),哪怕你的代理监听的是 TLS 端口——这是 Composer 的硬性约定,填https://或漏协议头都会失效 - 命令必须加
-g(全局),否则写入的是当前项目composer.json,换目录就丢失 - 验证是否生效:运行
composer config -g --list | grep -E "(http|https)-proxy",确认两行都存在且格式正确
代理地址写错的典型现象和修复
填错 https-proxy 值几乎不报错,但所有 HTTPS 请求都失败。常见错误包括:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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→ 静默 fallback 直连 → 最终超时 - 密码含
@、/、:没 URL 编码 → 认证失败,返回407 Proxy Authentication Required;可用php -r "echo rawurlencode('pa@ss/word');"快速生成 - Windows 下执行
composer config -g报Could not write to file→ 检查%APPDATA%\Composer\config.json目录是否存在且可写
公司 NTLM 代理或内网环境怎么办?
Composer 原生不支持 NTLM 认证,设了 http-proxy 也会直接返回 407。这时候不能靠改 Composer 配置解决,必须引入中转代理工具:
- 用
cntlm或px在本地起一个监听127.0.0.1:3128的 HTTP 代理,由它处理 NTLM 认证 - 再让 Composer 连这个本地地址:
composer config -g http-proxy http://127.0.0.1:3128和composer config -g https-proxy http://127.0.0.1:3128 - 临时验证:运行
curl -x http://127.0.0.1:3128 -I https://packagist.org/packages.json,如果 curl 也报407,说明中转层没配好
代理和镜像能一起用吗?
不能。代理与镜像源互斥——配了 repo.packagist.org.proxy 就不能再设 repo.packagist 镜像,否则 Composer 会忽略镜像配置,仍走代理。企业内网已有阿里云、腾讯云等完整同步镜像时,应直接换源,别画蛇添足配代理,反而多一层故障点。
最容易被忽略的一点:CI/CD 环境里,composer config -g 写入的是当前用户的配置,容器重启后可能丢失。必须配合 COMPOSER_HOME 环境变量固化路径,并在构建脚本开头显式设置 COMPOSER_PROCESS_TIMEOUT,否则超时策略完全不可控。


















