composer verify命令根本不存在,官方从未实现;真实可用的是composer validate-sig(仅检查signature字段存在性)和composer install --verify-signatures(需composer≥2.2且显式启用),而日常默认生效、最可靠的完整性校验是dist.shasum哈希比对。

composer verify 命令根本不存在
你在中文文档或社区帖子里看到的 composer verify,是误传。Composer 官方从未实现该命令,2026 年 7 月最新版(v2.7.x)仍无此功能。所有声称“运行 composer verify 即可验签名”的教程,要么基于已废弃插件,要么混淆了其他工具(如 composer validate-sig 或第三方 CLI)。真实可用的命令只有 composer validate-sig 和 composer install --verify-signatures。
validate-sig 只检查已安装包是否带 signature 字段
composer validate-sig 不验证签名有效性,只扫描 vendor/ 下每个包的 composer.json 是否含 "dist": { "signature": "..." } 字段,并报告“有字段但未配置公钥”或“字段为空”。它不调用 GPG、不校验哈希、不联网查密钥。
- 若输出
Missing public key for vendor/package,说明你没导入对应作者公钥,不是包本身有问题 - 若输出
No signature found,大概率是该包根本没发布 Signed Dist 版本(绝大多数包都未启用) - 该命令不读
composer.lock,也不比对dist.shasum,和完整性无关
真正生效的签名验证必须显式启用
要让 Composer 校验包作者的 GPG 签名,必须同时满足三个条件:Composer ≥ 2.2、配置启用、且包本身带有效 signature 字段。否则,install 过程完全跳过签名逻辑。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局启用:
composer config --global security.signature-verification true - 临时启用:
composer install --verify-signatures - 验证是否触发:加
-v参数运行,日志中出现Verifying dist signature for vendor/package才算真在跑 - 失败报错是
Missing signature for vendor/package或Signature mismatch,而非模糊的 “invalid signature”
shasum 才是每天都在工作的校验机制
别被“签名”二字带偏——生产环境最可靠、默认开启、无法绕过的校验,是 composer.lock 中每个包的 dist.shasum(SHA-256)比对。它不依赖任何公钥或 GPG,只认哈希值。
- 手动改一个
shasum值,再跑composer install,立刻报Signature mismatch, package is corrupted - 该机制在缓存命中时仍生效(校验发生在解压前),镜像源替换 dist 包但未更新 shasum 就会暴露
- CI 流水线建议加
COMPOSER_EXPERIMENTAL=1 composer verify-checksums --strict,离线复核 vendor 与 lock 是否一致
所谓“签名安全”,本质是两件事:元数据可信(靠 Packagist packages.json 的 GPG 签名 + 正确配置 repos.packagist)、包内容未篡改(靠 dist.shasum)。前者防投毒,后者防污染,缺一不可。而中间那个“作者签名”,目前仍是极少数包的选择,不是基础设施。










