“no space left on device”大概率是inode耗尽而非磁盘空间不足;需用df -i检查/tmp和composer缓存目录,清空时应先杀掉所有composer进程再运行composer clear-cache,并手动清理sys_get_temp_dir()下的临时文件及禁用cache.vcs。

“No space left on device”不是磁盘块满了,大概率是 inode 耗尽——尤其在 macOS、Docker 容器或低配云主机上,composer install 卡在 Downloading 或 Extracting archive 阶段时,90% 以上都属于这个情况。
先用 df -i 确认是不是 inode 耗尽
别只看 df -h。真正致命的是 inode 用光了,哪怕显示还有 20GB 空间也会失败:
- Linux/macOS:运行
df -i /tmp和df -i $(composer config --global cache-dir),任一Use%≥ 95% 就是它 - Windows 没有直接查 inode 的命令,但只要报错 +
composer install卡住,就按 inode 耗尽处理 - 特别注意
/tmp(Linux/macOS)或$env:TEMP(Windows)——Composer 解压 ZIP、生成 autoload 全走这里,全是小文件,专吃 inode
杀光 composer 进程再清缓存
直接 rm -rf ~/.composer/cache 极危险:IDE 内嵌扫描、后台残留的 php /path/to/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
- Linux/macOS:
kill -9 $(pgrep -f "composer"),再跑composer clear-cache - Windows:
tasklist | findstr composer→ 记下 PID →taskkill /PID XXXX /F→ 再执行composer clear-cache -
composer clear-cache会校验路径权限、跳过被占用项,比手动删安全得多
必须手动清理 sys_get_temp_dir() 和禁用 cache.vcs
composer clear-cache 默认不碰 vcs/ 目录和系统临时目录,而这俩才是 inode 杀手:
- 查真实临时目录:
php -r "echo sys_get_temp_dir();" - Linux/macOS 清理:
find $(php -r "echo sys_get_temp_dir();") -name "composer_*" -o -name "php*.phar" -delete 2>/dev/null - 禁用 Git 裸仓库缓存:
composer config -g cache.vcs false—— 这步最关键,否则下次安装又生成几百 MB + 上万小文件的vcs/目录 - 禁用后 Composer 自动 fallback 到
--prefer-dist,下载 ZIP,更快更轻量
真正难搞的从来不是磁盘块,而是那些看不见的 inode;vcs/ 目录不被 clear-cache 触及,sys_get_temp_dir() 下的临时文件又极易被忽略——这两处不处理,清十次缓存都没用。










