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

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 后,优先手动扫一遍这个路径。










