启用 "secure-http": true 必须配合 https 镜像源,否则因协议不匹配导致下载失败;正确写法是在 composer.json 的 config 节点中同时设置 "secure-http": true 和 repositories 数组指向 https:// 开头的镜像地址。

直接在 composer.json 里设 "secure-http": true 就行,但必须配合 HTTPS 镜像源才真正生效——单独开这个开关反而会让下载直接失败。
为什么只配 secure-http 会报错
Composer 默认开启 secure-http(2.2+ 版本),一旦设为 true,它会拒绝所有 HTTP 协议的包源请求。而如果你没换镜像,它仍会尝试访问 http://packagist.org 或旧版 HTTP 镜像,结果就是:
The repository 'packagist' uses an insecure protocol (http://)- 或更直接的
cURL error 1: Protocol "http" not supported or disabled in libcurl
这不是配置错了,是“只改一半”导致协议和源不匹配。
composer.json 里怎么写才安全又可用
必须同时满足两个条件:启用校验 + 指向 HTTPS 地址。推荐写法如下(放在 config 节点下):
{
"config": {
"secure-http": true,
"repositories": [
{
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
]
}
}
注意几点:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
-
repositories是数组,别漏了方括号;url必须以https://开头,不能是http://或无协议 - 如果项目已存在
composer.lock,改完要跑composer update --lock刷新锁文件里的源地址 - 全局配置优先级低于项目级,所以
composer.json里的设置会覆盖composer config -g的同名项
验证是否真走 HTTPS
执行带详细日志的命令,观察实际请求地址:
composer update -vvv
在输出里找类似这样的行:
Downloading https://mirrors.aliyun.com/composer/p2/monolog/monolog.json-
Writing /path/to/vendor/composer/installed.json(说明没卡在下载阶段)
如果看到任何 http:// 开头的 URL,说明某处还残留 HTTP 配置,重点检查:
-
composer config -g repo.packagist是否输出 HTTP 地址 -
composer.json里有没有拼写错误,比如"url": "https//..."(少了个冒号) - 是否误用了过时镜像,例如已停用的
https://packagist.phpcomposer.com
最关键的不是“开了 secure-http”,而是整个下载链路——从包索引到 ZIP 包——全部落在 HTTPS 上。国内用户最容易忽略的是:镜像源本身必须支持全路径 HTTPS,否则哪怕首页是 HTTPS,后续包文件仍可能跳转到 HTTP CDN,导致校验失败。










