执行 composer clear-cache 仅清理 ~/.composer/cache/files/ 下的 ZIP 包和部分元数据,不清理 repo 缓存、installed.json 和 composer.lock,故常无法解决 ZIP 损坏或版本错配问题;应结合删除 vendor、composer.lock 及指定缓存文件,并用 require 精确安装版本。

composer clear-cache 为什么经常不解决问题
执行 composer clear-cache 只清掉 ~/.composer/cache/files/ 下的 zip 包和部分元数据,但不会动 ~/.composer/cache/repo/https---packagist.org/ 里的 packages.json 快照,也不会清理 vendor/composer/installed.json 或 composer.lock。结果就是:你以为重拉了,其实 Composer 还是从旧 metadata 里选版本,再从本地缓存(哪怕已删)里找 ZIP —— 如果 ZIP 没真删干净,它就继续解那个坏文件。
只重装一个包,别用 update
composer update vendor/package-name 看似精准,实则危险:它会更新该包及其所有子依赖的版本,还改 composer.lock,CI 构建可能因此漂移。你只是想“下载 v2.1.0 这个确切版本”,不是做一次 mini-update。
- 先移除:
composer remove vendor/package-name - 再指定版本重装:
composer require vendor/package-name:2.1.0(注意没^或~,这是精确锁定) - 如果是 dev 依赖,加
--dev参数:composer require --dev phpunit/phpunit:10.5.0
缓存 ZIP 损坏导致 Failed to extract
看到类似 Failed to extract vendor/symfony/console 或 Corrupted zip file,八成是 ~/.composer/cache/files/ 下对应 ZIP 文件损坏。Composer 不会自动跳过或重试,只会卡死。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查缓存路径:
composer config --global cache-dir - 进
files/目录,按包名搜 ZIP:find $(composer config --global cache-dir)/files -name "*symfony*console*" - 删掉匹配的 .zip 文件(别删整个
files/) - 再跑
composer require,它才会真正走网络下载
要确保从头来,必须同步清理 lock 和 vendor
只删缓存、只删 vendor/ 都不够。因为 composer.lock 里硬编码了 dist.sha256,如果缓存 ZIP 被删了但 lock 没变,Composer 仍会校验失败并拒绝安装。
- 备份:
cp composer.lock composer.lock.bak - 彻底清空:
rm -rf vendor composer.lock(Windows 用rd /s /q vendor & del composer.lock) - 强制重装:
composer install --no-cache --force-checksums
漏掉 composer.lock 就白忙一场;尤其在 CI 中,lock 文件若含旧镜像地址,重装永远走错路。

















