composer提示disk full磁盘空间不足解决_composer清理缓存与临时文件【技巧】

11次阅读

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

composer提示disk full磁盘空间不足解决_composer清理缓存与临时文件【技巧】

Composer 报 disk full 错误,通常不是项目目录满了,而是 Composer 自身缓存或临时目录占用了大量空间 —— 清理 ~/.composer/cache//tmp 下的 Composer 临时文件能快速释放数 GB 空间。

查清 Composer 缓存实际占用大小

Composer 默认把包下载、压缩包解压、ZIP 提取等中间产物全堆在缓存目录,且不会自动清理旧版本。尤其频繁切换 dev-maindev-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_*.zipcomposer_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 扫描时容易被忽略。

text=ZqhQzanResources