答案:必须同步删除vendor和composer.lock后重装,因校验失败根源是composer.lock中硬编码的dist.sha256与新包不匹配;仅清缓存、换镜像或单删vendor均无效,须确保镜像源生效、系统时间准确且四者对齐。

“hash verification failed”不是网络连不上,而是 Composer 主动拒绝加载——必须同步删掉 vendor 和 composer.lock,再重跑 composer install;只清缓存、只换镜像、只删 vendor 都无效。
为什么 composer clear-cache 不能解决哈希不匹配
校验失败的根源不在缓存里,而在 composer.lock 文件中硬编码的 dist.sha256 值。Composer 安装时会严格拿这个哈希去比对刚下载下来的 zip 包,哪怕只差一个字节也直接报错。
-
composer clear-cache只清~/.composer/cache/(Linux/macOS)或%APPDATA%\Composer\Cache(Windows),composer.lock里的旧哈希完全不受影响 - 只删
vendor后执行composer install,它仍照着旧lock文件去校验新包,必然失败 - Windows 用户常漏掉
del composer.lock,必须配对执行:rd /s /q vendor & del composer.lock
怎么确认当前用的是哪个镜像源,而不是你以为的那个
很多人以为运行了 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 就设好了,其实请求可能根本没走到镜像站。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查全局配置:
composer config -g repos.packagist,正确输出应为{"type":"composer","url":"https://mirrors.aliyun.com/composer/"};如果还是packagist.org,说明没设上 - 查项目级覆盖:
composer config repositories,若出现"type": "vcs"或自定义 URL,会直接绕过镜像机制 - 手动验证通断:
curl -I https://mirrors.aliyun.com/composer/packages.json,必须秒回 HTTP/2 200 才算真通;企业内网常见 TLS 握手卡死,可临时关 SSL 验证:composer config -g secure-http false(完事后务必恢复)
真正有效的修复流程(顺序不能乱)
删之前建议先备份: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,所有dist.sha256都来自同一时刻快照
哪些操作只是绕过,不是修复
临时禁用校验能让你跑通命令,但根本问题还在,且 Composer 2.2+ 已明确弃用相关机制。
-
COMPOSER_DISABLE_CHECKSUM_VERIFY=1 composer install:已标记为deprecated,未来版本会移除 -
composer config -g secure-http false:不仅跳过 checksum,还允许不安全的 HTTP 源,风险极高 -
--no-verify-checksums或--ignore-platform-reqs:这些参数根本不影响 checksum 校验逻辑,对checksum verification failed无效
最常被忽略的点是:哈希校验本身极轻量,问题从来不在它太严,而在于你没让 composer.lock、缓存、镜像源、系统时间这四者对齐。尤其是 CI/CD 中挂载的持久化缓存,光靠 --no-cache 不保险,得用 COMPOSER_CACHE_DIR=/dev/null 彻底隔离。

















