Composer 2.0+ 默认强制 HTTPS,secure-http=true 为默认值;私有仓库 URL 必须以 https:// 开头且证书有效;HTTP 仓库会直接报错退出。

Composer 默认已强制使用 HTTPS 下载包,无需额外配置——但前提是你的 Composer 版本 ≥ 2.0 且未被手动降级或绕过安全机制。
composer config -g secure-http true 是默认行为,不是开关
从 Composer 2.0 开始,secure-http 默认值就是 true,意味着所有包仓库(repositories)必须通过 HTTPS 提供服务,HTTP 地址会被直接拒绝。
- 执行
composer config -g secure-http查看当前值,大概率输出true - 如果你曾手动设为
false(例如临时调试私有 HTTP 仓库),现在应立即恢复:composer config -g secure-http true
- 设为
false会导致安装时出现类似错误:The repository 'http://packagist.org' is not secure, use HTTPS instead.
私有仓库必须用 HTTPS,否则 composer install 直接失败
如果你在 composer.json 中添加了自定义仓库(如私有 Packagist 或 GitLab Package Registry),它必须以 https:// 开头,否则 Composer 2+ 会中止解析。
- 错误写法:
"url": "http://repo.example.com"→ 触发Invalid repository type: The URL must be an HTTPS URL. - 正确写法:
"url": "https://repo.example.com",且该域名需有有效 TLS 证书(自签名证书需额外配置ssl.certificate_authority) - 若必须用自签名证书,可在全局配置中指定 CA 路径:
composer config -g ssl.certificate_authority /path/to/ca-bundle.crt
composer self-update 本身也走 HTTPS,但要注意代理或镜像源
Composer 自身更新(self-update)始终通过官方 HTTPS 地址 https://getcomposer.org/download/ 获取 Phar 包。但如果你用了国内镜像(如腾讯、阿里),要确认镜像站是否同步支持 HTTPS 并正确重定向。
- 检查当前更新源:
composer self-update --status,注意输出中的 URL 是否为 HTTPS - 若使用镜像,确保镜像配置在
~/.composer/config.json中的repositories.packagist.org.url是 HTTPS 地址,例如:{"repositories": {"packagist.org": {"type": "composer", "url": "https://mirrors.tencent.com/composer/"}}} - 某些老旧镜像仅提供 HTTP,强行使用会导致
secure-http拒绝连接
真正容易被忽略的是:即使你没动过任何配置,如果项目里存在 repositories 块且其中某条 URL 是 HTTP,composer install 就会在解析阶段报错退出——它不会等下载时才提醒,而是在读取 composer.json 后立刻校验协议安全性。










