composer升级后必须手动清缓存,因2.5+到2.6+变更元数据格式与缓存策略,旧缓存会导致包加载失败或静默跳过;推荐执行composer self-update && composer clear-cache --no-interaction。

composer self-update 后必须立刻清缓存
新版 Composer(尤其是 2.5+ 升级到 2.6+)会变更 repo/ 下元数据格式、HTTP 缓存策略和 Git 仓库校验逻辑。旧缓存里的 packages.json 可能含已弃用字段,导致 composer update 报 Could not load package xxx in http://repo.packagist.org,或静默跳过某些包——这不是网络问题,是缓存不兼容。
-
composer self-update只替换二进制文件,完全不碰~/.composer/cache/ - 升级后首次
composer update仍会复用旧repo/缓存,失败时不会 fallback,也不提示“缓存过期” - 必须手动清,推荐组合执行:
composer self-update && composer clear-cache --no-interaction
只清 repo/ 不清 files/ 更安全高效
90% 的“升级后拉不到新包”“镜像源切换失效”问题都出在元数据层,files/ 下的 ZIP 包格式未变,新版仍可直接解压复用;但若你刚从 Composer 1 升到 2,files/ 里可能混有旧版 .tar 包,建议一并清理。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 精准清理命令:
rm -rf ~/.composer/cache/repo/* - 保留已下载 ZIP 包,后续
install不必重下大体积 dist 包 - 如需清理旧 tar 包:
find ~/.composer/cache/files -name "*.tar" -delete -
vcs/目录结构稳定,清了反而影响 Git 包安装速度,别动
post-update-cmd 脚本不能替代升级后清理
post-update-cmd 是在 composer update 成功执行后触发的,但它解决不了“升级 Composer 本身后首次 update 就失败”的场景——此时连 update 都跑不起来,钩子根本没机会执行。
- CI/CD 中更可靠的做法是:先
composer self-update,再composer clear-cache --no-interaction,最后才composer install - 若已在
composer.json里配了post-update-cmd,它只对后续的 update 有效,对升级 Composer 引发的问题无补救作用 - Windows 下注意:
composer clear-cache --no-interaction必须加参数,否则在 GitHub Actions 等非交互环境会卡住
clear-cache 报 Corrupted cache file 怎么办
这通常不是缓存内容损坏,而是文件句柄被占用:IDE(如 PHPStorm)后台扫描 ~/.composer/cache/files/,或 Composer 进程未完全退出,导致 clear-cache 删除时校验失败。
- 执行前先确认无残留进程:
lsof -D ~/.composer/cache(macOS/Linux),Windows 用任务管理器关掉所有php.exe - 已报错别重试——等 10 秒再运行,或改用
rm -rf ~/.composer/cache/*(确保无进程占用后再手动删) - macOS 上若缓存目录是软链接到 NAS,
clear-cache可能因文件系统不支持原子删除而中断,建议先备份再删:cp -r ~/.composer/cache /tmp/composer-cache-backup && rm -rf ~/.composer/cache/*










