Composer默认拒绝HTTP仓库因secure-http为true;可临时禁用(--no-secure-http或config secure-http false)或为私有HTTP源设allow_ssl_downgrade:true。

为什么 Composer 会拒绝连接非 HTTPS 的仓库?
这是 Composer 默认安全策略在起作用:secure-http 配置项设为 true(默认值)时,它会直接拒绝所有 http:// 协议的包源地址,哪怕该地址能正常访问、包也真实存在。错误信息里 “Your configuration does not allow connections to…” 后面跟着的正是那个被拦截的 http://xxx 地址。
如何临时绕过 secure-http 限制?
仅限调试或内网离线环境使用,不建议长期开启。执行以下任一操作:
- 运行命令时加
--no-secure-http参数:composer install --no-secure-http
- 临时关闭全局配置:
composer config -g secure-http false
(注意:这会影响所有项目) - 只对当前项目禁用:
composer config secure-http false
(修改的是当前目录下的composer.json)
怎样安全地添加私有 HTTP 仓库?
如果必须用 HTTP 协议(比如公司内网无 TLS 的 Satis 或 Toran Proxy),不能简单关掉 secure-http,而应显式声明该源为“可信 HTTP”:
- 在
composer.json的repositories中,为该仓库添加"type": "composer"和"allow_ssl_downgrade": true -
allow_ssl_downgrade是关键开关,它只对这个仓库生效,不影响其他 HTTPS 源的安全性 - 示例片段:
{ "repositories": [ { "type": "composer", "url": "http://packages.example.com", "allow_ssl_downgrade": true } ] }
为什么改了 composer.json 还报错?
常见疏漏点:
- 忘记运行
composer update --lock或composer install重新加载配置 - 误把
allow_ssl_downgrade写在根级,而不是放在具体repositories条目内部 - 仓库
type不是"composer"(比如用了"package"或"vcs"),此时allow_ssl_downgrade不生效 - 用了
composer config命令修改但没加-g(全局)或没在项目根目录下执行(本地),导致配置未写入预期位置
最稳妥的做法:删掉 vendor/ 和 composer.lock,确认 composer.json 里仓库配置正确,再跑一次 composer install。









