必须用composer config --global cache-dir确认真实缓存路径,因Composer优先读取COMPOSER_CACHE_DIR环境变量而非默认路径;清完无效果常因路径错误、vcs/目录被跳过、vendor/才是空间主因或权限不匹配。

怎么确认当前 Composer 正在用哪个缓存路径
很多人删了半天没效果,根本原因是 composer clear-cache 清的不是你想象中的那个目录。Composer 会优先读取 COMPOSER_CACHE_DIR 环境变量,其次才是默认路径;公司镜像、CI 配置、甚至宝塔面板都可能偷偷改掉它。
必须用这行命令查真实路径:composer config --global cache-dir。输出结果才是 Composer 当前认的“家”。
- Linux/macOS 下常见但不可信的路径:
~/.composer/cache(仅当没设环境变量时才生效) - Windows 下别只看
%APPDATA%\Composer\Cache,得粘贴进资源管理器地址栏验证是否存在 - 宝塔或 Docker 环境里,运行用户可能是
www或root,得用sudo -u www composer config --global cache-dir切身份查
为什么 composer clear-cache 清完空间没变
最常被忽略的三个事实:
-
composer clear-cache默认跳过vcs/目录——而它单个 Git 裸仓库就能占 300–800 MB,且耗尽 inode - 真正吃空间的往往是
vendor/,不是缓存;一个中等 Laravel 项目vendor/常超 300 MB,缓存却可能只有 42 MB - 权限错乱:之前用
sudo composer install写入的缓存,普通用户执行clear-cache会被静默拒绝,终端不报错也不删文件
验证是否真删了:执行后立刻跑 du -sh $(composer config --global cache-dir)(Linux/macOS)或看资源管理器属性(Windows),别信终端有没有输出。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
手动清理 vcs/ 和按时间筛旧包更有效
composer clear-cache 是全量清,没有筛选能力。想精准释放空间,得自己动手:
- 强制清
vcs/(安全,下次需要自动重建):rm -rf ~/.composer/cache/vcs/*(Linux/macOS)rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) - 禁用 Git 缓存,一劳永逸:
composer config --global cache.vcs false,后续所有 Git 包都走--prefer-dist - 按时间清理不用的 dist 包(避免误删):
find ~/.composer/cache/dist -mindepth 1 -type d -mtime +30 -empty -delete
加-empty是关键,只删空目录,避开正在解压中的临时包
CI/CD 或计划任务里执行要绕开哪些坑
在 GitHub Actions、GitLab CI 或宝塔计划任务里直接写 composer clear-cache,大概率卡住或静默失败:
- 必须加
--no-interaction,否则默认等待交互确认 - 建议先加
--dry-run预检:composer clear-cache --no-interaction --dry-run,确认输出路径是否指向 NFS 挂载点或预期磁盘 - 宝塔脚本里不能写相对路径,必须用绝对路径:
/usr/local/bin/composer config --global cache-dir,并确保用对应用户执行(如sudo -u www /usr/local/bin/composer clear-cache) - 如果仍卡住,说明有进程锁着缓存目录:
lsof +D $(composer config --global cache-dir)(Linux/macOS)或handle.exe -p php.exe(Windows)
真正麻烦的从来不是命令本身,而是缓存路径归属、并发访问和权限错位——这些细节不检查,clear-cache 就只是个回车键。

















