答案是inode耗尽而非磁盘空间不足;composer缓存含数万小文件占用大量inode,尤其vcs/目录未被clear-cache清理,需用df -i验证并手动删除或禁用cache-vcs。

composer clear-cache 为什么清完还报 No space left on device
大概率不是磁盘块(block)用光了,而是 inode 耗尽。Composer 缓存目录(~/.composer/cache)里塞了几万个小文件:每个 ZIP、每个 JSON 元数据、每个 Git 哈希都占一个 inode。APFS(macOS)、WSL 或某些 Linux 发行版对小文件极不友好。
验证方式很简单:df -i 查 Use% 列。如果接近 100%,哪怕 df -h 显示还有 20GB 空间,也会报 No space left on device。
composer clear-cache 本身会释放 inode,但若缓存路径在 inode 紧张的分区(比如 macOS 的系统卷),它刚删完,下一秒 composer install 就可能又打满。
真正吃空间的是 vcs/ 目录,但它默认不被清理
composer clear-cache 默认清 files/、repo/、installers/,但跳过 vcs/——这个目录存的是完整 Git 克隆(含 .git),一个 Laravel 或 Symfony 包就占 300–800 MB,且几乎从不复用。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 安全清理方式:
rm -rf ~/.composer/cache/vcs/(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) - CI 或小磁盘机器可永久禁用:
composer config --global cache-vcs false,后续 Git 包全走--prefer-dist安装 - 杀毒软件或 IDE(如 PhpStorm)可能锁住
vcs/文件,导致rm失败,关掉文件索引再试
精准清理旧包缓存,只能手动比对 composer.lock
Composer 没有 --only-unused 或 --before 2025 这类参数。“精准”靠的是你进目录比对 composer.lock。
操作步骤:
- 查缓存位置:
composer config --global cache-dir - 进
~/.composer/cache/files/,子目录名通常是vendor-name/version.zip格式 - 打开项目
composer.lock,搜"name": "monolog/monolog",看"version"字段值 - 只删那些不在任何项目
composer.lock中出现的.zip文件,别整包目录全删 - 示例(Linux/macOS):
find ~/.composer/cache/files -name "monolog-monolog-1.20.0.zip" -delete
清之前必须确认的三件事,否则白忙活甚至出错
盲目运行 composer clear-cache 可能卡在权限错误、删错路径、或根本没动到真占空间的地方。
- 先查真实路径:
composer config --global cache-dir——有些团队改过全局配置,或用了COMPOSER_HOME环境变量 - 再看实际大小:
du -sh $(composer config --global cache-dir)(Linux/macOS);如果不到 200MB,别指望靠它救 C 盘 - 检查权限:
ls -ld $(composer config --global cache-dir),确保当前用户有读写权;若曾用sudo composer,子目录可能属root,clear-cache会卡在Permission denied
最常被忽略的点是:vcs/ 目录不清理,等于只扫了地板却没搬走沙发。而手动删前没停 Composer 进程,容易触发 Corrupted cache file 报错。










