composer 安全验签需同时满足 secure-http: ok 和 signature verification: ok,后者才证明 packages.json 签名被校验;阿里云等公开镜像不转发 signature 字段,故 diagnose 显示 secure-http: ok 不代表验签生效;唯一可信依据是 composer install -v 日志中出现“verifying packages.json signature with key”;--verify 参数强制校验 dist 包 sha-256,要求 composer.lock 中 dist.shasum 非空且为 64 位。

composer diagnose 必须同时显示两个 OK
只看 secure-http: OK 不代表镜像安全,必须连带看到 signature verification: OK 才算签名验证真正生效。前者只说明 HTTPS 请求被允许,后者才证明 Composer 正在读取并校验 packages.json 中的 signature 字段。
常见错误是配置了 repos.packagist.url 但用的是阿里云、腾讯云等公开镜像——它们不转发 signature 字段,diagnose 仍会显示 secure-http: OK,却悄悄跳过验签,且不报错。
- 运行
composer diagnose -v,搜索输出中是否含signature verification: OK - 若只有
secure-http: OK,说明镜像未提供 signature,或公钥未正确加载(检查composer config --global signing-key是否指向https://packagist.org/keys.json) -
openssl.cafile配置错误会导致 keys.json 下载失败,这种问题不会在diagnose中提示,只能靠composer install -v日志里是否出现Verifying packages.json signature with key来确认
加 -v 参数看日志,别信配置项
配置写进去了 ≠ 验签在跑。唯一可信依据是安装时的实际日志输出。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
执行 composer install -v,逐行观察:
- 必须出现
Loading packages.json from https://...后紧跟着Verifying packages.json signature with key - 如果只有
Loading packages.json,没有验签行,说明要么镜像没返回signature,要么公钥加载失败,要么 PHP 的 OpenSSL 证书链有问题 - 若看到
Cloning而非Downloading+Extracting archive,说明当前包走的是 source 模式,完全绕过 dist 层哈希校验,--verify也无效
composer install --verify 是强制校验 dist 包的唯一开关
--verify 不依赖镜像是否可信,只认 composer.lock 里的 dist.shasum。它在解压前比对 SHA-256,失败直接中止。
- 必须确保
composer.lock中每个包的dist段含 64 位非空shasum字段,否则报Missing shasum for package xxx - 不兼容
--no-install或--dry-run,二者共用会直接报错 - 缓存仍会被使用,但校验发生在解压前——哪怕缓存文件已被篡改,也能当场发现
- CI/CD 中建议统一用
composer install --verify --no-interaction --no-progress,避免进度条干扰日志解析
镜像 URL 必须满足 type=composer 且末尾带斜杠
repos.packagist 的配置不是随便填个 HTTPS 地址就行。Composer 会按 type 和 URL 格式决定是否启用元数据代理逻辑。
-
type必须设为composer(不是package或留空),否则会被当成普通仓库,彻底绕过官方源语义 -
url必须以/结尾,例如https://mirrors.aliyun.com/composer/;少斜杠会导致 Composer 无法拼出正确的packages.json路径,降级回官方源或报 404 - 国内主流镜像站目前都不转发
signature字段,所以即使 URL 和 type 都对,signature verification: OK依然不会出现——这不是你配错了,是镜像本身不支持










