答案是inode耗尽而非磁盘块用光;需先用df -i(linux/macos)或get-psdrive(windows)确认缓存及/tmp分区inode使用率是否接近100%,再停掉所有composer进程,执行composer clear-cache,并手动清理cache/vcs/和sys_get_temp_dir()中的残留文件。

影响非常直接——不是“可能卡住”,而是必然报 No space left on device,哪怕 df -h 显示还有几十 GB 剩余。 根本原因往往不是磁盘块(block)耗尽,而是 inode 耗尽或临时目录塞爆。盲目删 vendor/ 或硬清 ~/.composer/cache 文件夹,大概率白忙一场,甚至引发缓存损坏。
先确认是不是真磁盘满,还是 inode 满
报 No space left on device 却发现 df -h 还有空间?立刻查 inode:
- Linux/macOS:运行
df -i,重点看/tmp和缓存所在分区(比如/home),Use%接近 100% 就是它 - Windows:PowerShell 中执行
Get-PSDrive C | Select-Object Used,Free,虽不直接显示 inode,但可辅助排除真实磁盘块是否真满 - 别跳过这步——清错地方只会浪费时间,还可能让 Composer 后续报
corrupted archive
停掉所有 composer 进程再清缓存
composer clear-cache 看似简单,但若后台有进程正写入缓存,它会静默跳过被占用项,导致“清了等于没清”。必须先终止:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查进程:
ps aux | grep composer(Linux/macOS)或tasklist | findstr composer(Windows) - 杀干净:
kill -9 $(pgrep -f "composer")(Linux/macOS)或手动结束对应 PID(Windows) - 再跑
composer clear-cache——它会校验权限、跳过损坏条目,比rm -rf ~/.composer/cache安全得多
手动清理 cache/vcs/ 和 sys_get_temp_dir() 里的残留
composer clear-cache 默认完全不管 cache/vcs/,但它恰恰是 inode 杀手;而 sys_get_temp_dir()(Windows 是 C:\Users\用户名\AppData\Local\Temp,Linux/macOS 是 /tmp)里堆积的 composer_*.zip、php*.phar,往往比缓存还难察觉:
- 安全清 Git 仓库:
rm -rf $(composer config --global cache-dir)/vcs(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) - 长期禁用它:
composer config --global cache.vcs false,之后所有包强制走--prefer-dist - 清临时目录:
find $(php -r "echo sys_get_temp_dir();") -name "composer_*" -delete 2>/dev/null(Linux/macOS);Windows 手动进 Temp 文件夹删composer_*.zip
真正占空间的大头往往是 vendor/ 和临时解压
一个中等 Laravel 项目,vendor/ 动辄 300–800 MB,而缓存通常不到 50 MB。想真正腾空间,得处理这里,但不能乱删:
-
rm -rf vendor/ composer.lock后必须跟composer install --no-dev --prefer-dist,否则项目直接崩 - 只临时腾空间?用
composer install --prefer-dist --no-dev替代全量安装,体积更小、解压更少 - CI/CD 中频繁构建?加
--no-cache强制跳过缓存查找,避免复用损坏缓存 - 注意:
composer.lock必须存在,否则install会重新解析依赖树,可能升版出错
最常被忽略的是缓存路径权限问题——命令看似执行成功,其实什么都没删掉,接着就报 No space left on device。遇到异常,先查 ls -ld $(composer config --global cache-dir),再决定要不要修复属主。










