Composer卡在“Loading composer repositories”主因是HTTPS请求被拦截或认证失败,需同时配置http-proxy和https-proxy(值均以http://开头),且镜像URL末尾必须带/、ssl.cafile须为纯PEM格式并全局配置。

Composer 默认就用 HTTPS 协议连仓库,根本不需要“切换”——你遇到的 HTTP 相关问题,99% 是代理、证书或镜像源配置错导致的假象。
为什么 composer install 卡在 “Loading composer repositories”?
这不是协议没切到 HTTPS,而是 Composer 在发 HTTPS 请求时被拦截或认证失败。常见表现是卡住几秒后报 cURL error 60 或 Could not resolve host。
- 只配了
http-proxy没配https-proxy:Composer 对两者完全分离路由,漏掉https-proxy就等于没配代理 - 私有仓库用了自签名/内网 CA,但
ssl.cafile指向的文件格式错、顺序错、权限不足,或没加--global - 镜像源 URL 少了末尾
/(如写成https://mirrors.aliyun.com/composer),Composer 2.5+ 会拼出错误路径并静默 fallback 到https://packagist.org,然后因网络策略失败
https-proxy 必须显式配置,且值必须是 http:// 协议
别信“系统环境变量自动生效”。Composer 不读 HTTP_PROXY 或 HTTPS_PROXY,只认自己配置的字段:
- 正确写法:
composer config --global http-proxy http://127.0.0.1:8080和composer config --global https-proxy http://127.0.0.1:8080 - 注意:
https-proxy的值仍是http://协议——这是为建立 CONNECT 隧道,不是 typo - 验证是否生效:
composer config --global --list | grep -E "(http-proxy|https-proxy)",两行都得有输出
ssl.cafile 配置不生效的三个硬坑
哪怕路径、文件名看着都对,也可能白配:
- 文件不是纯 PEM 格式:开头必须是
-----BEGIN CERTIFICATE-----,不能有 BOM、空行、注释;用openssl x509 -in ca.pem -text -noout能解析才靠谱 - 证书链顺序反了:中间 CA 必须在前,根 CA 在后;用
cat intermediate.pem root.pem > combined.pem拼接,别手拖进编辑器 - 没走全局:项目级配置
composer config ssl.cafile /path/to/ca.pem只影响当前项目,而 HTTPS 握手发生在全局网络层,必须加--global
最常被忽略的一点:Composer 2.5+ 加载 ssl.cafile 失败时完全不报错,而是静默 fallback 到系统默认 CA——所以你改了配置却还报 60 错,大概率是文件本身不可用,而不是命令没跑对。











