Composer update不清理缓存,必须同步清理三处:先composer clear-cache,再删~/.composer/cache/repo/https---packagist.org/、vendor/composer/installed.json和composer.lock;否则仍复用旧元数据与版本锁定。

Composer update 后“缓存没清干净”,根本不是 update 命令的问题,而是它压根不负责清任何缓存——你得手动或自动处理三类独立缓存:Composer 自身元数据、框架编译缓存、Git 克隆副本。
composer update 本身不清理任何缓存
执行 composer update 只做三件事:拉新包、写 composer.lock、更新 vendor/ 目录。它不会碰 ~/.composer/cache/repo/(包索引)、bootstrap/cache/(Laravel)、var/cache/(Symfony),更不会删 ~/.composer/cache/vcs/(Git 仓库)。很多人以为 “update 完了就完了”,结果第二天装不上新版,其实是旧元数据还在生效。
-
composer update后composer show package/name还显示旧版本?大概率是~/.composer/cache/repo/https---packagist.org/没清 - 升级 Laravel 9 → 10 后报
Class not found?90% 是bootstrap/cache/config.php或routes-v7.php没清 - 磁盘空间没释放?
composer clear-cache默认跳过vcs/,而它常占 1–3 GB
必须同步清理的三个位置(顺序不能错)
只跑 composer clear-cache 不够,它只清 files/ 和 vcs/(默认不删)和 repo/(但有时权限或路径错导致漏删)。真正卡住更新的是这三处:
- 先运行
composer clear-cache(清基础 ZIP 包和部分元数据,避免干扰) - 再删元数据快照:
rm -rf $(composer config --global cache-dir)/repo/https---packagist.org/ - 删本地状态记录:
rm -f vendor/composer/installed.json - 删锁文件:
rm -f composer.lock(关键!留着它,update就永远按旧 lock 走)
Windows 用户注意:$(composer config --global cache-dir) 在 PowerShell 中需写成 $(composer config --global cache-dir).Trim(),或直接用 $env:APPDATA\Composer\Cache\repo\https---packagist.org\。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
为什么 Laravel/Symfony 必须额外清框架缓存
Composer 更新完 vendor/,框架缓存仍指向旧类名、旧配置结构、旧路由签名。比如 Laravel 的 config:cache 把所有 .php 配置合并成一个数组,如果新包加了 config/myapp.php,不运行 php artisan config:clear && php artisan config:cache 就永远读不到。
- Laravel:至少清
config:clear、route:clear、cache:clear,升级主版本时还要view:clear - Symfony:用
php bin/console cache:clear --env=prod,别漏--no-warmup(CI 环境常用) - 别信 “重启 PHP-FPM 就行”——缓存文件是磁盘上的 PHP 脚本,不删不重生成
怎么验证元数据真刷新了
别靠感觉,要看日志。运行 composer update --dry-run -v,盯紧输出:
- 如果出现
Downloading https://packagist.org/packages.json→ 成功,元数据已重拉 - 如果只有
Reading /home/user/.composer/cache/repo/https---packagist.org/packages.json→ 没清干净,回去重删repo/目录
额外提醒:"minimum-stability": "stable" 会过滤掉 dev/beta 版本,这不是缓存问题,是约束本身在起作用——删光所有缓存也看不到那些版本。
最易被忽略的是 composer.lock。删了缓存、删了 installed.json,却留着它,update 就永远原地不动。

















