答案是inode耗尽或Composer缓存目录塞爆;需先用df -i(Linux/macOS)或Get-PSDrive(Windows)确认inode使用率是否达100%,再停掉所有composer进程,执行composer clear-cache,并手动清理cache/vcs/及cache/files/中的旧版本目录。

不是磁盘块真满了,而是 inode 耗尽或缓存目录塞爆了——直接删 vendor 或改镜像源没用。
先确认到底是磁盘块满还是 inode 满
报 No space left on device 但 df -h 显示还有几十 GB 剩余?十有八九是 inode 耗尽。Composer 缓存里每个包版本都建独立子目录(比如 ~/.composer/cache/files/monolog/monolog/1.27.0/),全是小文件,df -i 的 Use% 接近 100% 就会卡死。
- Linux/macOS:运行
df -i,重点看/tmp和缓存所在分区(如/home) - Windows:PowerShell 中执行
Get-PSDrive C | Select-Object Used,Free,虽不显示 inode,但能排除磁盘块是否真满 - 查缓存路径:
composer config --global cache-dir,再ls -la $(composer config --global cache-dir)看文件数量
停掉所有 composer 进程再清缓存
直接 rm -rf ~/.composer/cache 风险极高:IDE 内嵌的 Composer、后台未退出的 php composer.phar、残留锁文件,都会导致删一半就报 file_put_contents(): No space left on device,甚至损坏缓存索引。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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")或手动结束对应 PID - 再跑
composer clear-cache——它会校验路径权限、跳过被占用项、安全删除无效/损坏/过期条目
手动清理 cache/vcs/ 和旧 ZIP 包
composer clear-cache 不会删“有效但陈旧”的 ZIP 包(比如三年前装过的 monolog/monolog 1.18.0),这类冗余最占空间;而 cache/vcs/ 是 inode 杀手,clear-cache 默认完全不管它。
- 进
~/.composer/cache/vcs/,直接rm -rf *(该目录纯临时,无风险) - 进
~/.composer/cache/files/,按包名分组,保留最新版(看子目录名中的版本号),删其余旧版目录 - 若属主异常(比如显示
root),先修复:sudo chown -R $USER:$(id -gn) ~/.composer/cache
内存不足也常伪装成磁盘满
当 PHP 内存限制太低(默认 128M/256M),Composer 在解析依赖时可能静默崩溃或触发系统 OOM killer,错误日志却显示 No space left on device ——尤其在 composer update 或缺失 composer.lock 时。
- 临时提内存:
php -d memory_limit=-1 composer install - CI 环境中注意容器总内存是否够(如 GitHub Actions ubuntu-latest 默认仅 7GB),光调 PHP 限制没用
- 禁用 xdebug:
php -d zend_extension= -d xdebug.mode=off composer install,开发环境开着它会让内存翻倍
真正卡住的时候,别纠结配置,先 composer clear-cache——多数情况这一步就解决问题。但容易被忽略的是:cache/vcs/ 目录和 inode 使用率,这两个地方清完才叫清彻底。

















