composer代理配置错误会导致静默失败,必须严格使用http://协议+明确端口(如http://127.0.0.1:8080),https-proxy也须以http://开头;漏端口、用https://或混淆字段均会卡在“loading composer repositories”且无报错。

composer config -g http-proxy 写错协议或端口导致静默失败
Composer 对代理 URL 的格式极其敏感,写错一个字符就可能卡在 Loading composer repositories 且不报错。最常见的是漏端口、用 https:// 开头、或把 http-proxy 和 https-proxy 混淆。
必须严格按这个格式写:
-
composer config -g http-proxy http://127.0.0.1:8080✅(http://+ 明确端口) -
composer config -g https-proxy http://127.0.0.1:8080✅(注意:https-proxy的值也得是http://开头) -
composer config -g http-proxy http://user:pass@127.0.0.1:8080✅(含认证时,用户名密码直接拼在 URL 前) -
composer config -g http-proxy https://127.0.0.1:8080❌(https://不被识别) -
composer config -g http-proxy http://127.0.0.1❌(缺端口,静默失效)
验证是否生效:composer config -g http-proxy 必须输出完整 URL;若为空或报错,说明没写对。
代理返回 407 Proxy Authentication Required 怎么办
这不是 Composer 错,是代理服务要求认证但没传凭证。现象是命令直接报 Failed to connect to proxy 或 HTTP/1.1 407 Proxy Authentication Required。
解决办法不是改 Composer 配置,而是补全 URL 中的认证信息:
- 先确认代理支持 Basic 认证(绝大多数企业代理都支持)
- 执行:
composer config -g http-proxy http://用户名:密码@127.0.0.1:8080 - 密码含特殊字符(如
@、/、:)必须 URL 编码,例如pa@ss→pa%40ss - Windows 用户需管理员权限运行 CMD,否则写不进全局配置文件
~/.composer/config.json
临时验证连通性:curl -x http://用户名:密码@127.0.0.1:8080 https://mirrors.aliyun.com/composer/packages.json,能返回 JSON 就说明认证通了。
镜像源和代理共存时,repo.packagist 配置被忽略
只要项目根目录 composer.json 里存在 "repositories" 字段(哪怕只是空数组 "repositories": []),全局 repo.packagist 配置就会被跳过——不是优先级低,是彻底不读。
此时即使你配了代理,Composer 也会 fallback 到 https://packagist.org,而你的代理很可能不允许直连它,结果就是 cURL error 7 或 Connection refused。
排查方式:
- 运行:
composer install -vvv 2>&1 | grep -i downloading - 看第一行请求 URL:如果是
https://packagist.org,说明镜像根本没生效 - 删掉项目
composer.json中的repositories字段,或改用--repository临时指定:composer install --repository=https://mirrors.aliyun.com/composer/
注意:--repository 只对当次命令生效,不影响任何配置,适合调试。
CA 证书校验失败不是 secure-http 的问题
某些企业代理(如深信服、Fiddler)会做 HTTPS 中间人劫持,导致 TLS 握手失败。这时候禁用 secure-http 没用,因为错误发生在代理层,不是 Composer 层。
composer config -g secure-http false 只跳过 HTTPS 域名证书校验,但解决不了代理伪造证书引发的握手失败。
真正要配的是 CA 根证书路径:
- 拿到公司内网 CA 证书(通常是
.crt或.pem文件) - 执行:
composer config -g cafile /path/to/company-ca.crt - Linux/macOS 下确保路径真实存在且可读;Windows 注意用正斜杠或双反斜杠
- 别用
/dev/null或空字符串,那会导致 SSL 完全失效,仅限临时绕过
最容易被忽略的一点:PHP 自身的 curl.cainfo 设置如果和 Composer 的 cafile 冲突,也可能让证书配置失效。检查 php --ini 输出的 php.ini 路径,确认里面 curl.cainfo 指向的是同一份证书文件。











