composer clear-cache 是清理 composer 全局缓存的标准命令,安全可靠,仅清除 files/、repo/、vcs/ 子目录,不触碰 vendor/、composer.lock 或项目文件;但磁盘未释放常因路径误判、vcs/ 和临时目录未清、或环境干扰所致。

composer clear-cache 就是清理全局缓存的标准命令,它安全、可靠,且不会动 vendor/、composer.lock 或项目文件——但很多人执行后发现磁盘没变小、错误照旧,问题往往出在路径误判、缓存类型漏清或环境干扰上。
怎么确认当前缓存路径和真实占用?
别删错地方。Composer 实际用的路径可能被 COMPOSER_CACHE_DIR 环境变量、公司镜像或 CI 配置覆盖,~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)只是默认值,不一定是真实位置。
- 查真实路径:
composer config --global cache-dir - Linux/macOS 查大小:
du -sh $(composer config --global cache-dir) - Windows 查大小:把
%APPDATA%\Composer\Cache粘贴进资源管理器地址栏 → 右键“属性” - 不到 200 MB 基本不用管;超 1.5 GB 且半年没碰老项目,才值得动手
为什么 composer clear-cache 清完空间没变?
最常见原因不是命令失效,而是你真正想删的压根不在它的清理范围内:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 你其实想删的是
vendor/目录——一个中等 Laravel 项目常占 300–800 MB,而缓存可能只有 42 MB -
cache/vcs/默认被跳过,但单个 Git 裸仓库含完整.git,动辄 300–800 MB,还耗尽 inode;必须手动删:rm -rf $(composer config --global cache-dir)/vcs(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) -
sys_get_temp_dir()下堆积的composer_*.zip、php*.phar文件,clear-cache完全不碰;查路径:php -r "echo sys_get_temp_dir();"
CI/CD 或无交互终端里卡住怎么办?
在 GitHub Actions、GitLab CI 等环境里,composer clear-cache 默认会等待交互确认,直接 hang 住。
- 必须加
--no-interaction:避免卡在提示 - 建议先加
--dry-run预检:composer clear-cache --no-interaction --dry-run,确认输出路径是否指向预期位置(比如 NFS 挂载点而非本地磁盘) - 如果仍卡住,说明有后台进程锁着缓存目录:
lsof +D $(composer config --global cache-dir)(Linux/macOS),或handle.exe -p php.exe(Windows,需 Sysinternals 工具)
手删比 clear-cache 更“精准”,但也更危险
官方命令会跳过正在被占用的文件,而手动 rm -rf 不判断——删到一半被写入,后续可能报 Corrupted cache file。
- 删前务必停掉所有 composer 进程:
ps aux | grep composer(Linux/macOS)或tasklist | findstr composer(Windows) - 只清某类缓存时才手动进目录:
rm -rf ~/.composer/cache/files/*(删 ZIP 包)、rm -rf ~/.composer/cache/repo/*(清元数据)、rm -rf ~/.composer/cache/vcs/*(清 Git 缓存) - 千万别删
~/.composer/cache/repo/packagist.org/以外的 repo 子目录——那是核心索引,删了会导致首次composer update明显变慢
真正难处理的不是缓存本身,而是那些 clear-cache 触及不到的地方:插件私有缓存(如旧版 hirak/prestissimo)、sys_get_temp_dir() 中的临时 ZIP、被沙盒隔离的 snap 安装路径,以及 CI 中因用户权限混用导致的残留锁文件——这些地方不排查,光跑命令只是自我安慰。










