Composer 报 disk full 错误通常源于缓存目录(尤其是 ~/.composer/cache/vcs/)堆积大量 Git 克隆副本,而非项目 vendor 目录;应分步清理:先 composer clear-cache,再手动删除 vcs/ 中 7 天前的目录,并清理 /tmp 下 composer 临时文件。

Composer 报 disk full 错误,通常不是项目目录满了,而是 Composer 自身缓存或临时目录占用了大量空间 —— 清理 ~/.composer/cache/ 和 /tmp 下的 Composer 临时文件能快速释放数 GB 空间。
查清 Composer 缓存实际占用大小
Composer 默认把包下载、压缩包解压、ZIP 提取等中间产物全堆在缓存目录,且不会自动清理旧版本。尤其频繁切换 dev-main、dev-develop 或使用大量私有包时,缓存极易膨胀到 5–10 GB。
- 运行
composer global config cache-dir查看当前缓存路径(默认为~/.composer/cache) - 用
du -sh ~/.composer/cache/*分项查看各子目录大小,重点关注files/(已下载 ZIP)、repo/(包元数据)、vcs/(Git 克隆副本) -
vcs/目录最危险:每次composer update都可能新建一个 Git 克隆,旧克隆不会被自动 GC
安全清理 Composer 缓存的三步操作
别直接 rm -rf ~/.composer/cache —— 这会强制下次所有包重下,浪费带宽和时间。应分层清理:
- 执行
composer clear-cache:清空files/和repo/,但保留vcs/(这是最耗空间的部分,却没被包含) - 手动清理
vcs/:进入~/.composer/cache/vcs/,删除超过 7 天未访问的目录:find ~/.composer/cache/vcs -type d -mtime +7 -empty -delete
find ~/.composer/cache/vcs -type d -mtime +7 -exec rm -rf {} + - 检查并清理系统临时目录:
ls -lt /tmp | grep composer,删掉残留的composer_*.zip或composer_extract_*目录
防止缓存再次爆满的配置调整
Composer 没有内置缓存 TTL 或自动 GC,得靠人工干预或配置降级:
- 禁用 VCS 缓存(适合 CI 或磁盘小的机器):
composer config --global cache-vcs false,后续 Git 包将跳过本地克隆,改用dist方式安装 - 限制缓存大小(需 Composer 2.5+):
composer config --global cache-max-size "500M",超限时自动清理最久未用项 - 定期清理可写成 cron:
0 3 * * * /usr/bin/composer clear-cache && find ~/.composer/cache/vcs -type d -mtime +3 -exec rm -rf {} + 2>/dev/null
真正卡住的往往不是 vendor/,而是 ~/.composer/cache/vcs/ 里躺着十几个完整的 Git 仓库副本——它们不随 composer install 更新而更新,只增不减,且默认权限为私有,du 扫描时容易被忽略。










