直接运行composer clear-cache --no-interaction仅清理files/、repo/等子目录,不清理vcs/和sys_get_temp_dir()中的composer_*.zip文件,后者才是磁盘与inode耗尽主因;须先用composer config --global cache-dir确认路径,再手动清理三处并禁用cache.vcs。

直接运行 composer clear-cache --no-interaction 就能批量清掉全局缓存,但真占空间的 vcs/ 和临时目录默认不清理——不手动补刀,磁盘和 inode 很可能还是满的。
先确认真实缓存路径和占用量
很多人删了 ~/.composer/cache 却没效果,是因为路径早被环境变量或公司镜像改过。必须用 Composer 自己认的路径:
- 查路径:
composer config --global cache-dir - 看大小:
du -sh $(composer config --global cache-dir) - 不到 200 MB 基本不用管;超 1.5 GB 且半年没动老项目,才值得清理
为什么 composer clear-cache 清完空间没变?
最常见原因就三个,按破坏力排序:
- 你真正想删的是
vendor/(中等 Laravel 项目常占 300–800 MB),而clear-cache完全不碰它 -
cache/vcs/默认被跳过——单个 Git 裸仓库含完整.git,动辄 300–800 MB,还生成上万小文件,是No space left on device的高频元凶 -
sys_get_temp_dir()下堆积的composer_*.zip、php*.phar没被清理,Linux/macOS 路径通常是/tmp
安全批量清理三处核心位置
执行前先停掉所有 composer 进程(ps aux | grep composer),否则删一半会报 Corrupted cache file:
- 清
vcs/(最耗空间):rm -rf $(composer config --global cache-dir)/vcs - 清旧 ZIP 包(按时间删):
find $(composer config --global cache-dir)/files -type d -mtime +90 -delete - 清临时 ZIP(查路径再删):
find $(php -r "echo sys_get_temp_dir();") -name "composer_*" -mmin +60 -delete 2>/dev/null
长期避免反复爆满的关键配置
反复手动清理只是擦边球。治本靠两件事:
- 禁用 Git 缓存:
composer config --global cache.vcs false,后续所有包强制走--prefer-dist - 换缓存路径到大分区:
composer config --global cache-dir "/mnt/data/composer-cache",避免/home或系统盘被撑爆
注意:禁用 cache.vcs 后首次安装会慢一点,因为不再复用 Git 克隆,但换来的是稳定的空间控制和 inode 安全——这点容易被忽略,但线上服务器出问题时往往就是它在作祟。


















