Composer 2.0+ 默认强制 HTTPS,若镜像仅支持 HTTP,需在 composer.json 的仓库配置中显式添加 “secure-http”: false 才能启用 HTTP;全局配置无效,推荐改用 HTTPS 镜像或反向代理。
Composer 默认走 HTTPS,但某些镜像不支持 HTTPS 重定向
Composer 自 2.0 起默认强制使用 HTTPS 协议请求包源(包括 packagist.org 和所有配置的 repo),如果镜像站仅提供 HTTP 服务(如早期国内某些自建镜像),composer install 会直接报错:Connection refused 或 cURL error 60: SSL certificate problem。这不是 Composer “不支持 HTTP”,而是它拒绝降级——除非你显式允许。
如何让 Composer 使用 HTTP 镜像(不推荐,仅限内网/测试环境)
必须绕过 Composer 的安全策略,且仅对特定仓库生效。全局禁用 HTTPS 会破坏安全性,不建议。
- 在
composer.json中为镜像仓库添加"secure-http": false字段:
{
"repositories": [
{
"type": "composer",
"url": "http://packagist.phpcomposer.com",
"secure-http": false
}
],
"require": {}
}
- 执行
composer clear-cache清除缓存,否则旧的 HTTPS 记录可能仍被复用 - 注意:该设置只对当前项目生效;若用
composer config -g全局设置,secure-http不支持全局配置,强行写入会被忽略
更安全的做法:换用支持 HTTPS 的镜像或自建 HTTPS 代理
主流镜像(如阿里云、腾讯云、华为云)均已支持 HTTPS,且证书有效。错误往往出在配置了过时的 HTTP 地址却没更新协议。