Composer安装提示Disk full_清理Composer临时文件的方法【维护】

3次阅读

composer install 报 Disk full 的直接原因是临时解压目录(如 ~/.composer/cache/files/ 和 /tmp/composer_*)占满空间,而非磁盘真正写满;需清理缓存、手动删除 files/ 下未完成解压目录及 /tmp 中残留文件,并通过迁移缓存、启用 prefer-source、限制并发来预防。

Composer安装提示Disk full_清理Composer临时文件的方法【维护】

Composer install 报 Disk full 错误的直接原因

不是磁盘真的写满,而是 Composer 在解压包时会先下载 .zip 到临时目录(COMPOSER_CACHE_DIR 或默认的 ~/.composer/cache),再解压到 vendor/。这个过程会产生大量中间文件,尤其在低配服务器或 docker 容器里,/tmp 分区常只有几十 MB,极易爆满。

清理 Composer 缓存和临时解压残留的实操命令

执行以下三步,覆盖最常见残留场景:

  • 清空 Composer 主缓存:composer clear-cache(会删掉 ~/.composer/cache 下所有已下载的 zip 和 dist 包)
  • 手动删临时解压目录(Composer 不自动清理):rm -rf ~/.composer/cache/files/*(注意:不是 archives/,是 files/ 下未完成解压的临时目录)
  • 检查并清理系统 /tmp 中残留的 Composer 临时文件:find /tmp -name "composer_*" -type d -mtime +1 -exec rm -rf {} +

防止下次再爆满的配置调整

关键不是“多清理”,而是“少写入”:

  • 把缓存移到大分区:export COMPOSER_CACHE_DIR="/data/composer-cache"(然后 mkdir -p /data/composer-cache
  • 禁用 ZIP 解压,改用 git 克隆(适合内网或有 Git 仓库权限):composer config --global prefer-source true
  • 限制并发下载数,降低瞬时 IO 压力:composer config --global github-oauth.github.com "your_token" + composer config --global process-timeout 3600

验证是否真清理干净的方法

别只看 df -h,要确认 Composer 自己的缓存路径是否还占空间:

  • 查当前缓存位置:composer config --global cache-dir
  • 看缓存大小:du -sh $(composer config --global cache-dir)
  • 运行一次最小依赖安装测试:composer create-project --no-install phpunit/phpunit:9.6 --quiet,观察 /tmp 是否又生成大量 composer_* 目录

真正容易被忽略的是 files/ 子目录下的未完成解压目录——它们不会被 clear-cache 清掉,但会卡住后续所有操作。每次报 Disk full 后,优先手动扫一遍这个路径。

text=ZqhQzanResources