composer clear-cache 仅清理 ~/.composer/cache/ 下的 repo/、files/、vcs/ 子目录,不触碰 vendor/、composer.lock 或项目文件;需先用 composer config --global cache-dir 确认真实路径,再检查大小,超1.5 gb且半年未用才建议清理。

缓存清不干净,重装就白干
Composer 清缓存不是执行 composer clear-cache 就完事。它只清 ~/.composer/cache/ 下的 repo/、files/、vcs/,但如果你之前用过 sudo 安装、或 IDE 正在扫描 ZIP 文件、或缓存目录被环境变量覆盖,clear-cache 可能根本没删对地方,甚至静默失败。
务必先确认真实路径:composer config --global cache-dir;再看大小:du -sh $(composer config --global cache-dir)(Linux/macOS)或右键属性(Windows)。如果输出 Cache directory does not exist,说明你正对着空目录执行清理。
- 权限问题:之前用
sudo composer install写入的缓存,普通用户运行clear-cache会被拒绝 - 路径错位:设置了
COMPOSER_CACHE_DIR但未生效,clear-cache实际清的是默认路径外的空目录 - 文件被锁:PHPStorm 或杀毒软件正在读取
~/.composer/cache/files/中的 ZIP,系统阻止删除
只想重装某个包?别碰 update
composer update vendor/package-name 看似精准,实则危险:它会更新该包及其所有子依赖的版本,可能连带升级 laravel/framework 或 symfony/http-foundation,导致 CI 构建结果不可复现。你只是想“重新下载”,不是“升级”。
可靠做法是两步原子操作:
- 运行
composer remove vendor/package-name—— 它自动删composer.json条目、清vendor/目录、更新 autoload 映射 - 再运行
composer require vendor/package-name:^x.y.z—— 显式指定版本,避免隐式升级;若为开发依赖,加--dev
如果怀疑本地 ZIP 缓存损坏(比如反复报 zlib_decode() error),可手动删对应缓存:find $(composer config cache-dir) -name "*vendor-package-name*" -name "*.zip" -delete,再 require 就强制走网络。
重装全部依赖时,三个来源必须全断
只删 vendor/ 不删 composer.lock → Composer 仍按锁文件复原,不拉新包;只删 composer.lock 不清缓存 → 它可能直接从 ~/.composer/cache/files/ 解压旧 ZIP,连 HTTP 请求都不发;只清缓存不删 lock → 下次 install 还是按旧哈希还原。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
真正“从头来过”的三步是:
-
rm -rf vendor/(Linux/macOS)或rmdir /s vendor(Windows) composer clear-cachecomposer install --no-cache --prefer-dist --optimize-autoloader --no-dev
其中 --no-cache 是关键开关,禁用本次所有缓存查找;--prefer-dist 避免触发 Git clone;--no-dev 跳过开发依赖,大幅缩短解析时间。
卡在 “Resolving dependencies through SAT”?不是缓存问题
如果 composer install 或 update 卡住,且 -vvv --profile 日志停在 Resolving dependencies through SAT,说明约束冲突不可解,不是网速慢、也不是缓存脏——换镜像、清缓存、重启终端都没用。
此时该做的是定位阻断链:
- 运行
composer why-not vendor/package-name:version,输出会逐层显示谁在 require 更老版本、谁在 conflict 新版 - 常见阻断源:根
composer.json的conflict字段、laravel/framework的require、或某间接依赖的硬编码版本 - 确认后,要么改
composer.json约束,要么临时加--ignore-platform-reqs绕过(仅调试用)
metadata 滞后(比如新版本不出现)常因 ~/.composer/cache/repo/https---packagist.org/ 里的 packages.json 未刷新,这时要手动 rm -rf 该目录,而非只跑 clear-cache。










