必须同步删除vendor目录和composer.lock文件,再执行composer install --no-cache --force-checksums;仅清缓存不删二者会导致校验失败、解压卡顿或autoload残留。

缓存清理后直接运行 composer install 通常会失败
因为 Composer 不是“清完缓存就自动重来”,它仍会读取 vendor/ 目录结构和 composer.lock 中的校验值。若之前安装中断,vendor/ 可能残留破损目录,composer.lock 里的 dist.sha256 又和本地缓存 ZIP 不匹配,此时 composer install 会卡在 Failed to extract 或静默跳过损坏包。
必须同步清理 vendor 和 lock 文件再重装
只清缓存不碰 vendor/ 和 composer.lock,等于换轮胎不修车架——表面干净,内里冲突仍在。正确做法是三者联动:
- 删掉整个
vendor/目录(Linux/macOS:rm -rf vendor;Windows:rmdir /s vendor) - 删掉
composer.lock(不是重命名,是彻底删除) - 执行
composer install --no-cache --force-checksums
--no-cache 强制跳过所有本地缓存查找,--force-checksums 让校验失败立刻报错,不写入破损的 vendor/。这两参数缺一不可。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
为什么不能只删 vendor 后跑 composer install
因为 composer.lock 还在,Composer 会照着它去复原旧状态。但若锁文件里记录的是已损坏 ZIP 的哈希,而你又没清缓存,它可能直接解压那个坏包,导致 Class not found 或 require(): failed to open stream。更隐蔽的问题是:某些包的 autoload_static.php 已生成但内容不全,composer install 不会重新生成它,只会沿用旧文件。
CI/CD 流水线中要加 --prefer-dist 和 --no-dev
在自动化部署里,时间敏感且环境干净,建议补全参数:
-
--prefer-dist:避免触发git clone,全部走 ZIP 下载,减少网络和权限风险 -
--no-dev:跳过require-dev,大幅缩短依赖解析时间,尤其当phpunit或mockery卡在 SAT 阶段时 - 若用 Docker,务必在
composer install前加RUN chown -R www-data:www-data /app,否则vendor/权限错会导致 PHP-FPM 无法读 autoload
真正麻烦的从来不是“删了缓存要不要重装”,而是删了哪几样、顺序对不对、参数有没有兜住校验缺口——漏掉 composer.lock 或少一个 --no-cache,就可能让整个构建在凌晨三点挂掉。










