必须设置 “secure-http”: false 才能使用 http 镜像,否则 composer 默认拒绝非 https 仓库并报错;该配置为硬性开关,影响所有仓库,且需确保镜像服务可用、网络可达。
Composer 设置镜像为 HTTP 协议(禁用 HTTPS)
Composer 默认会拒绝非 HTTPS 的镜像源,直接设置 http:// 地址会报错:The "http://packagist.phpcomposer.com" repository has a non-HTTPS URL, which is not allowed by default。必须显式允许不安全协议才能生效。
启用 allow-http 配置项
在全局或项目级 composer.json 中添加 "allow-plugins" 之外的关键配置是 "secure-http",但它控制的是「是否强制所有仓库使用 HTTPS」——设为 false 才能允许 HTTP 镜像。
- 运行命令修改全局配置:
composer config -g secure-http false - 或手动编辑
~/.composer/config.json,确保包含:{"secure-http": false} - 之后再设置 HTTP 镜像才不会被拦截,例如:
composer config -g repos.packagist composer http://packagist.phpcomposer.com
为什么不能只改 repo URL 而不关 secure-http
Composer 从 1.0 开始默认开启 secure-http,这是硬性校验:只要仓库 URL 以 http:// 开头,且该配置为 true(默认值),就会中止执行并抛出错误。即使你用 composer config 成功写入了 HTTP 地址,后续的 install 或 update 仍会失败。