应清理 Composer 缓存,尤其手动删除 ~/.composer/cache/vcs 目录;先用 df -h 和 du -sh 查占满位置,再执行 composer clear-cache && rm -rf ~/.composer/cache/vcs,最后可配置 cache-dir 到大分区预防。

Composer update 时提示 No space left on device 怎么办
这不是 Composer 本身出错,而是系统临时空间被 composer update 过程中大量下载、解压、重写操作耗尽。尤其在 CI 环境或小容量 VPS 上极常见。关键不是删项目文件,而是清理 Composer 自己的缓存和临时目录。
先查清磁盘哪块被占满:df -h 和 du -sh ~/.composer/cache/*
运行 df -h 看哪个挂载点 100%;如果 /home 或 /root 满了,大概率是 ~/.composer/cache 膨胀所致。Composer 缓存默认不自动清理,长期使用后可达数 GB。
-
du -sh ~/.composer/cache/vcs/:存放 Git 克隆副本,最占空间,尤其含大仓库(如 Laravel、Symfony)时 -
du -sh ~/.composer/cache/repo/:JSON 包索引缓存,通常较小 -
du -sh ~/.composer/cache/files/:已下载的 ZIP/TAR 包,可安全清理
执行精准清理:用 composer clear-cache + 手动删 vcs
composer clear-cache 会清 repo 和 files,但默认跳过 vcs —— 因为 Composer 认为它“可能被复用”。但实际中,vcs 缓存极少复用,且体积最大,必须手动处理。
composer clear-cache rm -rf ~/.composer/cache/vcs/
注意:rm -rf 后不要加尾部斜杠(即写 ~/.composer/cache/vcs,而非 ~/.composer/cache/vcs/),避免误删上层目录。执行后可立即腾出 1–5 GB 空间。
预防下次再爆满:配置 cache-dir 到大分区 + 设置自动清理
如果 /home 分区小,但 /data 或 /mnt 有空闲,可把缓存迁走:
composer config -g cache-dir /data/composer-cache
之后所有新缓存都写入该路径。另外,CI 脚本中建议加一行防呆:
composer clear-cache && rm -rf ~/.composer/cache/vcs
这个组合动作应作为 composer update 前固定步骤。别依赖 composer update --no-cache,它只跳过读缓存,仍会写临时文件到系统 /tmp,而 /tmp 往往更小。
vcs 目录的“可复用性”是 Composer 的乐观假设,在多数部署场景下不成立;不主动删它,下次 update 仍会复制一遍完整 Git 仓库。










