换镜像源后仍 checksum mismatch 的根本原因是 composer.lock 中的旧哈希值与镜像同步后的新包不匹配,必须同时删除 vendor 和 composer.lock 才能重建信任链。

为什么换镜像源后 still checksum mismatch
换阿里云、腾讯云等镜像后仍报 checksum mismatch,不是镜像“坏了”,而是你本地的 composer.lock 里还存着旧版本包的哈希值,而镜像已同步新版——新包文件和旧哈希对不上,Composer 就会拒绝安装。这和网络无关,是锁文件与源之间的信任链断裂。
- 镜像同步有延迟(通常 10–30 分钟),但你的
composer.lock可能记录的是刚被重推的 tag,哈希已变 -
composer clear-cache只清下载缓存,不碰composer.lock,错误校验值仍在 - 只删
vendor/目录,composer install仍会照着旧 lock 文件去校验,必然失败
必须同时删除 vendor 和 composer.lock
这是唯一能真正修复 checksum mismatch 的操作。删掉这两样,等于把“安装物”和“校验依据”一起清空,让 Composer 从头拉取元数据、生成全新锁文件。
- Linux/macOS:
rm -rf vendor composer.lock - Windows:
rd /s /q vendor & del composer.lock - 执行前建议先备份:
cp composer.lock composer.lock.bak - 别用
composer update替代——它默认复用旧 lock,不会刷新校验值
切回官方源再重装,确认问题根源
国内镜像只是加速手段,不是信任源。遇到校验失败,第一反应不是换另一个镜像,而是用官方源验证是否真有问题。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 先解除所有镜像干扰:
composer config -g --unset repos.packagist - 确认使用官方源:
composer config -g repo.packagist composer https://packagist.org - 清缓存:
composer clear-cache - 重装:
composer install—— 此时会拉最新元数据,生成带有效哈希的新composer.lock
如果官方源成功,说明是镜像同步延迟;如果仍失败,就要查 repositories 是否配置了私有源或 fork 项目(运行 composer config repositories 查看)。
确认镜像同步完成后再切回,别在中途硬切
阿里云镜像一般 10–30 分钟内完成同步,但这个过程是异步的。你在同步一半时切过去,很可能拿到的是“元数据新、包文件旧”的混合状态,照样触发校验失败。
- 验证镜像是否就绪:切回镜像后跑一次
composer clear-cache && composer install --no-install,看能否正常拉取packages.json且无报错 - 推荐镜像顺序:阿里云(最稳)> 华为云(有时更快)> 腾讯云;避免使用已停用的
https://packagist.phpcomposer.com - 临时绕过校验(如
COMPOSER_DISABLE_CHECKSUM_VERIFY=1)仅限调试,该变量在 Composer 2.2+ 已被标记为 deprecated,且不会修正composer.lock
真正麻烦的不是镜像本身,而是你项目里混用了自定义 repositories,尤其是 type: vcs —— 它返回的 dist 包哈希和 packagist.org 不一致,这时连官方源也会报错。这种 case 必须先注释掉可疑源再测试。










