答案是inode耗尽而非磁盘空间不足;需先用df -i检查/tmp及缓存目录inode使用率是否≥95%,再杀光composer进程、执行composer clear-cache、手动清理vcs/和临时目录,并禁用cache.vcs以根治问题。

“No space left on device”但df -h还有20GB?先查inode
这不是磁盘块满了,是inode耗尽。Composer在~/.composer/cache/vcs/和sys_get_temp_dir()里疯狂建小目录和文件(比如每个Git包一个裸仓库、每个ZIP解压临时目录),每个都占一个inode。macOS、Docker容器、低配云主机尤其容易爆满。
立刻验证:
- Linux/macOS跑:
df -i /tmp和df -i $(composer config --global cache-dir) - 若任意输出中
Use%≥ 95% 或Inodes available为0,就是它了
Windows没法直接查inode,但只要报错+卡在Downloading或Extracting archive阶段,就按inode问题处理。
删缓存前必须杀光所有composer进程
直接rm -rf ~/.composer/cache极危险——IDE后台扫描、未退出的php /path/to/composer.phar、残留锁文件,都会导致删到一半就报file_put_contents(): No space left on device,甚至损坏缓存索引。
安全做法:
- Linux/macOS:
kill -9 $(pgrep -f "composer") - Windows:
tasklist | findstr composer→ 记下PID →taskkill /PID XXXX /F - 确认无残留后,再跑:
composer clear-cache
composer clear-cache会校验权限、跳过被占用项、只删无效条目,比手动删稳得多。它默认不清理vcs/目录——那是inode最大杀手,清完还得单独处理。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
临时目录才是真凶,必须单独清理
sys_get_temp_dir()返回的路径(Linux/macOS默认/tmp,Windows默认%TEMP%)才是磁盘满的主因。Composer解压ZIP、生成autoload、运行脚本全走这里,堆积大量composer_*.zip、php*.phar等小文件,专吃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 - Windows:进该路径,手动删所有匹配文件
- 永久重定向(推荐):
Linux/macOS:TMPDIR="/mnt/data/tmp" php -d sys_temp_dir="/mnt/data/tmp" composer install
Windows PowerShell:$env:TMP="D:\temp"; $env:TEMP="D:\temp"; php "-d" "sys_temp_dir=D:\temp" composer install
确保目标目录存在且有写权限:mkdir -p /mnt/data/tmp && chmod 1777 /mnt/data/tmp
禁用vcs缓存和迁走cache-dir是一劳永逸的关键
~/.composer/cache/vcs/存的是Git裸仓库,每个包一个,动辄数万个小文件+几百MB空间,是inode和磁盘双料消耗源。但对绝大多数项目完全非必需——禁用后Composer自动fallback到--prefer-dist(下载ZIP包),速度更快、更轻量。
执行:
composer config --global cache.vcs false- 迁移缓存目录:
composer config --global cache-dir "/mnt/data/composer-cache" - 确认新目录有写权限:
chmod -R 755 /mnt/data/composer-cache
注意:cache.vcs关掉后,composer update仍能正常工作,只是不再克隆Git仓库;composer install完全不受影响。真正容易被忽略的是——vcs/目录必须手动清一次,clear-cache不会动它。










