必须同步删除vendor和composer.lock后重装,因校验失败根源是composer.lock中硬编码的dist.sha256与新包不匹配;仅清缓存、换镜像或单删vendor均无效,须切官方源、清缓存、删干净、重装生成新锁文件。

composer install 报 “hash verification failed” 怎么办
这不是网络问题,也不是缓存脏了,而是 composer.lock 里硬编码的 dist.sha256 值和实际下载下来的包文件哈希不一致。Composer 主动拒绝加载,不是警告,是直接中断。
- 只运行
composer clear-cache没用——它清的是~/.composer/cache/,但composer.lock里的旧哈希纹丝不动 - 只删
vendor/目录也没用——composer install仍会按旧 lock 文件去校验新包,必然失败 - Windows 用户常漏掉
del composer.lock,必须配对执行:rd /s /q vendor & del composer.lock
真正有效的修复流程(顺序不能乱)
删之前建议先备份:cp composer.lock composer.lock.bak。以下四步缺一不可:
- 切回官方源保真:
composer config -g --unset repos.packagist(或显式设为https://packagist.org) - 清缓存:
composer clear-cache - 删干净:
rm -rf vendor composer.lock(Windows 用rd /s /q vendor & del composer.lock) - 重装生成新锁:
composer install——此时拉取的是同一时刻的完整packages.json快照,所有哈希对齐
哪些操作只是绕过,不是修复
--ignore-platform-reqs 对哈希校验完全无效;--no-cache 或换镜像也救不了——只要 composer.lock 没更新,哈希就还是旧的。
- Composer 2.2+ 已明确弃用禁用校验的机制,强行绕过只会让问题延后爆发
- 临时关
secure-http只解决 TLS 握手卡死,和哈希无关 - 系统时间不准会导致 HTTPS 证书验证失败,间接影响元数据拉取,但不会导致哈希不匹配
为什么镜像不同步会让哈希“看起来”不匹配
国内镜像(阿里云、腾讯云)通常有 10–30 分钟元数据同步延迟,尤其对新发版或 dev- 分支。你从镜像下载的 zip 包,可能来自旧快照,而 composer.lock 里记录的是新快照的哈希。
- 手动验证是否真不同步:访问
https://mirrors.aliyun.com/composer/p2/vendor/package.json,看 JSON 中versions是否包含你要的版本及对应dist.sha256 - 若镜像返回 404 或缺失目标版本,说明尚未同步——别清缓存,换源或等同步更有效
- 确认当前用的是哪个镜像:
composer config -g repos.packagist,输出必须是{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}才算生效
composer.lock。修复时只盯文件本身,容易漏掉源头。











