必须先执行composer config --global secure-http false关闭全局安全开关,否则Composer会硬性拒绝http://镜像源并报错;该配置影响所有仓库,且需确保配置写入全局文件、格式合法并重启终端验证生效。

不能直接配 HTTP 镜像源,必须先关掉 secure-http 开关,否则 Composer 会硬性拒绝并报错:The "http://xxx" repository has a non-HTTPS URL, which is not allowed by default。
为什么 composer config -g repo.packagist composer http://... 一定失败
Composer 2.0+ 默认开启 secure-http,这是强制校验——只要 URL 以 http:// 开头,且该配置为 true(默认值),命令就直接中止,根本不会写入配置。你看到的“命令执行成功”只是 shell 返回码为 0,实际 repo.packagist 根本没被写进去。
-
composer config -g secure-http false必须先运行,且全局/项目级都要单独设 - 该配置影响所有仓库,不区分镜像或私有源;一旦关闭,所有 HTTP 源都可能被接受
- Windows 用户改完需重启终端,否则环境未刷新,
composer config -g secure-http查不到新值
secure-http false 后怎么配 HTTP 镜像
关掉开关后,才能用标准命令配 HTTP 地址,但依然要满足三要素:键名、type、尾斜杠。漏任一都会静默失效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局配法:
composer config -g repo.packagist composer http://packagist.phpcomposer.com/(注意末尾/) - 项目级配法:
composer config repo.packagist composer http://packagist.phpcomposer.com/(去掉-g) - 手动编辑
~/.composer/config.json或项目composer.json时,确保"secure-http": false和"url"字段同时存在且格式合法 - 验证是否生效:
composer config -g repo.packagist应输出含http://的对象;composer diagnose中secure-http行应显示OK(不是Disabled)
HTTP 镜像的风险和替代方案
即使配成功,HTTP 镜像本身不提供 signature 字段,composer install 会跳过包完整性校验,供应链投毒风险直接上升。这不是“慢一点”的问题,而是“拉下来的代码可能被篡改”。
- 旧镜像如
http://packagist.phpcomposer.com已多年未维护,中间人劫持风险真实存在 - 阿里云、腾讯云等 HTTPS 镜像虽快,但若未启用官方签名验证(
security.signature true),仍不安全 - 真正兼顾速度与安全的做法是:保留
secure-http true+ 用 HTTPS 镜像 + 开启签名验证(composer config -g security.signature true) - 如果网络真无法连 HTTPS(如某些内网隔离环境),应自建带签名同步的私有源,而非降级用裸 HTTP
配 HTTP 镜像本质是主动放弃一层校验,不是“多一个选项”,而是打开一个已知攻击面。哪怕只临时调试,也建议用 --repository=https://... 带参命令跑一次就删,别留 secure-http false 在配置里过夜。

















