secure-http是全局配置项,必须用composer config --global secure-http true设置并验证;项目级config中设置无效,且repositories含http://会直接报错,须升级https或在对应仓库内加"allow_ssl_downgrade": true。

secure-http 是全局开关,不是项目级配置项
Composer 的 secure-http 必须用 --global 设置才生效,写在项目 composer.json 的 config 里完全无效。它不合并、不继承,只认全局配置文件(~/.composer/config.json 或 $COMPOSER_HOME/config.json)。
常见错误是执行了 composer config secure-http false,结果发现没用——因为这只是改了项目级字段,而 Composer 2.0+ 根本不读它。
正确做法只有一条:composer config --global secure-http true。
验证是否真生效:composer config --global --list | grep secure-http,输出应为 secure-http: true(带 (global) 标记)。
repositories 里的 http:// 地址会直接报错退出
哪怕 secure-http 是 true,只要 composer.json 的 repositories 数组里存在任意一条 "url": "http://...",Composer 就会在解析阶段立刻失败,根本不会走到下载逻辑。
错误信息典型如:The 'http://' URL 'http://packages.internal' is not allowed。
修复方式只有两个:
• 把该仓库升级为 HTTPS(推荐);
• 若暂时无法支持 HTTPS,必须在**对应仓库对象内**加 "allow_ssl_downgrade": true(注意:不是写在根节点或 config 下);
• 删掉整个 repositories 块,让 Composer 回退到默认安全源。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
抓包或 -vvv 日志才是最终验证手段
别信配置“看起来对”,要确认实际请求走的是 HTTPS:
• 运行 composer update -vvv 2>&1 | grep "Downloading",所有 URL 必须以 https:// 开头;
• 若看到 http://packagist.org/...,说明要么 secure-http 没生效,要么有插件或脚本偷偷覆盖了源;
• composer config --list | grep repositories 查看当前生效的仓库列表,确认没有残留的 HTTP 地址;
• 注意 CI/CD 环境可能预装旧版 Composer 或挂载了不安全的全局配置,composer --version 和 composer config --global --list 都得在构建步骤里显式检查。
CA 证书缺失会导致 HTTPS 失败,但错误不是“没走 HTTPS”
遇到 cURL error 60 或 SSL handshake failed,第一反应不该是关 secure-http,而是确认证书链是否完整:
• ssl.cafile 只能用 --global 设置,项目级无效:composer config --global ssl.cafile /path/to/cacert.pem;
• PHP 的 curl.cainfo 或 openssl.cafile 也得指向有效证书包;
• 私有 Git 服务若用自签名证书,必须把 CA 加入系统信任库,或通过 ssl.certificate_authority 显式指定;
• 企业网络若劫持 TLS(比如中间人代理),即使证书路径正确,也会握手失败——这时得联系运维,不是调 Composer 配置。










