改 composer 缓存路径本身不能避免系统盘占满,但配合迁移 tmpdir 和禁用 cache.vcs 才能根治磁盘空间与 inode 耗尽问题;需依次执行:先重定向临时目录、再修改 cache-dir、最后关闭 vcs 缓存。

改 Composer 缓存路径不能“避免系统盘占满”,但能防止它成为压垮 C 盘或 /home 的最后一根稻草——前提是必须同时管住 cache-dir 和 TMPDIR,否则解压阶段仍会爆 /tmp 或 %TEMP%。
确认当前缓存路径和真实占用量
别凭印象删,先看 Composer 现在用的是哪条路:
- 运行
composer config --global cache-dir,输出的就是它正在写的路径(不是默认值,是实际生效值) - Linux/macOS 接着跑:
du -sh $(composer config --global cache-dir);如果输出是4K或0,说明缓存本身不占地方,问题不在那儿 - Windows 用户直接在资源管理器地址栏粘贴
%APPDATA%\Composer\Cache→ 右键“属性”看大小 - 特别注意:如果公司镜像或 CI 环境设置了
COMPOSER_CACHE_DIR环境变量,composer config --global cache-dir仍可能显示旧值,得用echo $COMPOSER_CACHE_DIR(Linux/macOS)或echo %COMPOSER_CACHE_DIR%(Windows)交叉验证
把 cache-dir 挪到大分区(不是改配置就完事)
改路径本身很简单,但容易卡在权限、路径不存在或挂载点类型上:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 目标目录必须存在且可写:
mkdir -p /mnt/data/composer-cache && chmod 755 /mnt/data/composer-cache(Linux/macOS) - 命令必须用绝对路径,
~不被解析:composer config --global cache-dir "/mnt/data/composer-cache" - Windows 示例:
composer config --global cache-dir "D:\composer-cache",确保D:是本地磁盘,不是 NFS 或 OneDrive 同步盘 - 改完立刻验证:
composer config --global cache-dir输出应与你设的一致;再跑一次du -sh或“属性”确认新路径为空(旧缓存不会自动迁移,要手动搬或删) - 副作用:首次
composer install会慢一点,因要重建全部缓存,但后续不受影响
同步重定向临时目录 TMPDIR(最关键的隐形炸弹)
Composer 下载 ZIP、解压、生成 autoload、跑脚本时,全依赖 PHP 的 sys_get_temp_dir()。这个目录默认是 /tmp(Linux/macOS)或 %TEMP%(Windows),往往只有几 GB,而一个 Laravel 包解压峰值可能吃掉 1.6 GB —— 这才是 No space left on device 的真正源头。
- Linux/macOS:
export TMPDIR="/mnt/data/tmp" && mkdir -p "$TMPDIR" && chmod 1777 "$TMPDIR" - Windows:
set TMPDIR=D:\tmp && mkdir D:\tmp(加到系统环境变量更稳妥) - 必须验证:
echo $TMPDIR或echo %TMPDIR%应返回新路径;再运行php -r "echo sys_get_temp_dir();"确认 PHP 真的读到了 - 只改
cache-dir不改TMPDIR,等于给油箱换大桶,却忘了排气管还堵在小孔里
禁用 vcs/ 缓存(省空间 + 避免 inode 耗尽)
~/.composer/cache/vcs/ 是磁盘和 inode 双杀目录,单个 Git 裸仓库常达 300–800 MB,含上万小文件。而 composer clear-cache 默认跳过它,df -i 显示 inode Use% ≥ 95% 时,vcs/ 几乎总是头号嫌疑。
- 永久禁用:
composer config --global cache.vcs false,后续所有 Git 包强制走--prefer-dist - 禁用后立即手动清残留:
rm -rf ~/.composer/cache/vcs/(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) - 注意尾部斜杠:
vcs/和vcs在rm -rf下行为不同,带斜杠更安全 - 副作用仅限首次
composer update稍慢(改走 dist 包),但彻底规避裸仓库再生,长期收益远大于这点延迟
真正治本的操作顺序是:先挪 TMPDIR,再挪 cache-dir,最后关掉 cache.vcs。三者缺一,系统盘就仍有被撑爆的风险——尤其当你的项目依赖大量 Git 包、又跑在 CI 或小容量云主机上时。










