composer clear-cache 只清 composer 缓存目录(如 ~/.composer/cache),不影响 composer.lock、vendor/ 和项目配置;装旧版是因 lock 文件锁定依赖,非缓存问题。

composer clear-cache 为什么有时清不干净
它只清 ~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)下的内容,但不会动 composer.lock、vendor/ 或项目配置。很多人清完缓存发现 composer install 还是装旧版,不是命令失效,而是 composer.lock 锁死了依赖树——这是设计行为,不是 bug。
常见误判场景:
-
composer install拉不到新版?先删composer.lock,再跑composer install或composer update - 刚切了阿里云镜像却仍走
repo.packagist.org?说明cache/repo/里残留了旧源签名,此时clear-cache才真正起作用 - 执行后提示
Cache directory does not exist?大概率是权限错乱(比如之前用sudo composer写过缓存),普通用户无法删除
清理前必须确认的三件事
别直接 rm -rf ~/.composer/cache,容易删错路径或触发权限错误。先做这三步:
- 查真实缓存路径:
composer config --global cache-dir—— 输出才是 Composer 实际认的目录 - 看实际占用大小:Linux/macOS 下运行
du -sh $(composer config --global cache-dir);Windows 用户粘贴路径到资源管理器,右键 → “属性” - 确认是否真满:报
No space left on device却df -h显示磁盘还有几十 GB?大概率是 inode 耗尽,运行df -i看/home或/tmp分区的 Use% 是否接近 100%
手动精简比全量清更有效的情况
composer clear-cache 安全但保守,它不会删“有效但陈旧”的 ZIP 包(比如三年前装过的 monolog/monolog 1.18.0),这类冗余最占空间又最无用。遇到大缓存且想省时间,可手动操作:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 只删旧 ZIP 包(保留每个包最新版):
cd $(composer config --global cache-dir)/files && for d in */; do ls -t "$d" | tail -n +2 | xargs -I{} rm -rf "$d{}"; done - 清 Git 克隆缓存(
vcs/是 inode 杀手):rm -rf $(composer config --global cache-dir)/vcs - 禁用 vcs 缓存(长期策略):
composer config --global cache.vcs false,之后所有包强制走--prefer-dist - 删元数据缓存(解决“装不到新版”):
rm -rf $(composer config --global cache-dir)/repo
手动删前务必停掉所有 composer 进程:ps aux | grep composer(Linux/macOS)或 tasklist | findstr composer(Windows),否则可能触发 Corrupted cache file 报错。
清完还是报内存不足或卡住?别只盯着缓存
composer install 失败常被归咎于缓存,但更常见的其实是 PHP 内存限制太低。报 Allowed memory size of ... bytes exhausted 时:
- 临时解决:
php -d memory_limit=2G composer.phar install或COMPOSER_MEMORY_LIMIT=2G composer install - 避免反复重试:加
--prefer-dist(跳过 git clone)、--no-dev(跳过开发依赖)能显著降低内存压力 - CI 环境中尤其要注意:如果构建镜像里曾用 root 运行过
composer,缓存属主变成 root,后续非 root 用户执行clear-cache会失败,需先修复权限:sudo chown -R $USER:$(id -gn) $(composer config --global cache-dir)
真正卡住的时候,别纠结配置,先 composer clear-cache,再确认 composer.lock 和镜像配置是否匹配——这两点比缓存本身更容易被忽略。










