磁盘空间不足主因是Composer默认缓存ZIP包、解压源码及repo元数据,长期积累耗尽磁盘或inode;需先用df -h和df -i定位问题,停进程后运行composer clear-cache清理,并配置cache-files-ttl 0和cache-files-maxsize 0禁用非必要缓存,同时清理系统临时目录。

磁盘空间不足不是 Composer 故意占地方,而是它默认缓存 ZIP 包、解压后源码、repo 元数据三类文件,长期不清理会同时吃掉磁盘空间和 inode——尤其在容器、CI 或 Windows 用户目录下,df -h 显示还有空间,df -i 却爆满,这才是真凶。
怎么确认是磁盘满还是 inode 满?
报 No space left on device 且卡在 Downloading 阶段时,别急着删项目目录。先跑两行命令:
-
df -h看各挂载点使用率(重点看/tmp和缓存所在分区) -
df -i看 inode 使用率——如果 Use% 接近 100%,哪怕磁盘剩 20GB 也照样失败
Composer 缓存里每个包都建独立子目录(比如 ~/.composer/cache/files/monolog/monolog/1.27.0/),全是小文件,正是 inode 杀手。Windows 上 %APPDATA%\Composer\Cache\ 同样适用该判断逻辑。
清缓存前必须停掉所有 composer 进程
直接 rm -rf ~/.composer/cache 很危险:IDE 内嵌的 Composer 扫描、上一个 composer install 残留的锁文件、甚至未退出的 php /path/to/composer.phar 进程,都会导致删一半就报 file_put_contents(): No space left on device,甚至损坏缓存索引。
- 先查进程:
ps aux | grep composer(Linux/macOS)或tasklist | findstr composer(Windows) - 杀干净:
kill -9 $(pgrep -f "composer")或手动结束对应 PID - 再执行:
composer clear-cache——它会校验完整性、安全删除,并重建必要元数据
清完用 du -sh ~/.composer/cache 确认是否真空;若仍报错,说明有进程锁着文件,得重试 kill 步骤。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
禁用 ZIP 和源码缓存,从源头减负
默认行为中,cache-files/(ZIP 包)和 cache/files/(解压后源码)占空间最多,但对 CI、Docker 构建或低配机器几乎无用。关掉它们比每次手动清更治本:
- 禁用 ZIP 缓存:
composer config --global cache-files-ttl 0 - 禁用解压后源码缓存:
composer config --global cache-files-maxsize 0 - 保留
cache-repo/(只存 JSON 元数据,体积小、加速依赖解析) - CI 场景直接加参数:
composer install --no-cache --no-interaction
注意:cache.source false 和 cache.dist false 是旧版写法,Composer 2.x 起已改用上述 cache-files-* 配置项,写错会静默忽略。
临时目录(sys_get_temp_dir())也得盯紧
Composer 解压 ZIP、生成 autoloader、运行脚本时,重度依赖系统临时目录。PHP 返回的路径在 Linux/macOS 是 /tmp 或 $TMPDIR,Windows 是 C:\Users\xxx\AppData\Local\Temp。这里常堆积大量 composer_*.zip、php*.phar 临时文件,尤其频繁 create-project 或中断安装后。
- 查位置:
php -r "echo sys_get_temp_dir();" - 清空:
rm -rf $(php -r "echo sys_get_temp_dir();")/composer_*(Linux/macOS) - Windows 下进 Temp 目录手动删
composer_*开头的文件夹
这个目录容易被忽略,但它和 cache-dir 一样,是磁盘和 inode 的双重风险点。容器场景更要检查挂载卷是否把 /tmp 绑定到了小容量分区。

















