secure-http 是 composer 2.0+ 默认启用的安全策略,强制所有仓库 url 必须为 https://,否则解析阶段即报错拒绝;它不总是生效因可能被手动关闭、项目级 http 仓库覆盖、使用旧版 composer 或 ci 镜像预降级。

Composer 默认已强制 HTTPS,但你看到 HTTP 请求或报错,说明配置被覆盖、证书失效,或用了不兼容的旧版。
secure-http 是什么,为什么它不总是生效
它不是“开关”,而是 Composer 2.0+ 的默认安全策略:所有仓库 URL 必须是 https://,否则直接拒绝加载。但以下情况会让它“失效”:
- 手动执行过
composer config -g secure-http false(全局关掉) - 项目
composer.json中repositories块里写了"url": "http://xxx"—— 这会优先于全局设置,且解析阶段就报错退出 - 用了 Composer 1.x(早已 EOL),
secure-http默认为false,必须升级:composer self-update - 某些 CI 镜像预装了降级配置,或脚本自动注入了 HTTP 源
怎么确认当前是否真走 HTTPS
别信“应该走了”,抓包或看日志最准:
- 加
-vvv跑一次:composer update -vvv 2>&1 | grep "Downloading",输出里只应出现https://地址 - 检查全局配置:
composer config -g secure-http应返回true - 查实际生效仓库:
composer config --list | grep -A5 repositories,确认packagist.org或镜像 URL 是https://开头 - 临时把镜像改成
http://测试:如果立刻报The 'http://' URL '...' is not allowed,说明secure-http确实生效了
私有 Git 仓库协议怎么统一成 HTTPS
GitHub/GitLab/Gitee 等平台默认支持 HTTPS 克隆,但 Composer 默认可能推导出 git@ 地址。用这个命令强制全局走 HTTPS:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer config -g default-protocol https
效果是:未显式写协议的包名(如 vendor/package)会被自动补成 https://github.com/vendor/package.git。注意:
- 它不改
repositories里已写死的地址(比如git@xxx或http://) - 私有 Git 服务必须支持 HTTPS + 认证(PAT 或 Basic Auth),否则
clone会卡住无提示 - 若必须走 SSH,别动 Composer 配置,改 Git 层:
git config --global url."git@github.com:".insteadOf "https://github.com/"
遇到 cURL error 60 或 SSL handshake failed 怎么办
这不是协议没强制,是 OpenSSL 验证失败。关键点:
- 错误不是“没走 HTTPS”,而是“HTTPS 走了,但证书不认”
-
ssl.cafile必须用--global设置,项目级配置无效:composer config --global ssl.cafile /path/to/company-ca.pem - 证书文件必须是 PEM 格式、无 BOM、无空行、含完整链(中间 CA + 根 CA),可用
openssl x509 -in ca.pem -text -noout验证 - PHP 进程得有读取权限(容器里常因挂载路径或用户 UID 导致静默 fallback)
- 别试
curl.cainfoinphp.ini—— Composer ≥2.5 不再依赖它
真正容易被忽略的是:即使所有配置都对,只要某条 repositories 的 URL 是 HTTP,Composer 就会在解析 composer.json 的第一秒报错退出,根本不会走到下载或证书校验那步。










