Composer安装包checksum错误 校验和不匹配解决办法【解决】

7次阅读

Checksum mismatch 错误是因下载包的 SHA256/SHA384 校验值与官方记录不符,触发 composer 安全保护;主因包括镜像缓存滞后、tag 重推导致 lock 文件校验值失效、代理篡改响应或私有仓库 checksum 不一致。

Composer安装包checksum错误 校验和不匹配解决办法【解决】

Composer install/update 报 checksum mismatch 错误的原因

这个错误本质是 Composer 下载的包文件和官方仓库记录的 SHA256(或 SHA384)校验值对不上,触发了安全保护机制。不是网络抖动或临时失败,而是明确拒绝加载可能被篡改或损坏的包。

常见触发场景包括:
— 本地镜像源(如阿里云腾讯云)缓存了旧版包但元数据已更新
composer.lock 中记录的 checksum 来自旧版 packagist.org,而当前下载的是新版构建(尤其发生在包作者重推 tag 后)
— 代理/cdn 中间层修改了响应体(极少见,但企业网络中存在)

清除 vendor + lock 文件并重新生成是最稳妥的解法

不要只删 vendor/ 或只跑 composer update —— 这会复用旧 composer.lock 里的错误 checksum,错误会复现。

  • 执行 rm -rf vendor composer.lockwindows 用 rd /s /q vendor & del composer.lock
  • 确认当前使用的是可信源:composer config -g repo.packagist composer https://packagist.org(若曾设过镜像,先清掉:composer config -g --unset repos.packagist
  • 运行 composer install,让 Composer 从头拉取元数据并生成新 composer.lock

如果必须用国内镜像,等同步完成后再切回(阿里云通常 10–30 分钟内同步完毕),不要在同步中途强制指定镜像源

临时跳过 checksum 校验(仅限调试,禁止上线)

这不是修复,是绕过。仅用于确认是否为 checksum 机制本身导致阻塞,或排查 CI 环境中不可控的中间层干扰。

  • composer install --ignore-platform-reqs --no-plugins 不影响 checksum 校验
  • 真正跳过需加环境变量COMPOSER_DISABLE_CHECKSUM_VERIFY=1 composer install
  • 或者临时修改全局配置:composer config -g secure-http false(注意:这同时禁用 https 强制要求,风险更高)

该方式不会修正锁文件,下次不带变量仍会报错;且 COMPOSER_DISABLE_CHECKSUM_VERIFY 在 Composer 2.2+ 已标记为 deprecated,未来版本会移除。

检查是否被私有仓库或 fork 干扰

如果你的 composer.json 中声明了 repositories,尤其是 type vcs 或自建 Satis/SatisPress 服务,它们返回的 dist 包 URL 和 checksum 可能与 packagist.org 不一致。

  • 运行 composer config repositories 查看所有注册源
  • 临时注释掉 repositories 块,再试 composer install
  • 检查 fork 的包是否打了同名 tag 但内容不同 —— Composer 无法区分“哪个才是权威”,只会按配置顺序取第一个匹配源

私有源务必确保其 dist 下载地址返回的 ZIP 文件与它在 packages.json 中声明的 dist.shasum 完全一致,否则每次 install 都会失败。

text=ZqhQzanResources