唯一可靠方式是运行composer config --global cache-dir,它输出的绝对路径才是当前实际生效的缓存目录,如/data/composer-cache或C:\Users\Alice\AppData\Roaming\Composer\Cache,~符号不被解析,且环境变量、镜像源或用户切换可能覆盖默认路径。

怎么确认 Composer 正在用哪个缓存路径
别凭经验猜默认路径,~/.composer/cache 或 %APPDATA%\Composer\Cache 很可能不是真实位置——环境变量 COMPOSER_CACHE_DIR、公司镜像配置、Docker 用户切换都可能覆盖它。
唯一可靠方式是运行:
composer config --global cache-dir
输出的绝对路径才是 Composer 当前写入缓存的位置。注意:~ 符号不会被解析,命令返回的一定是完整路径(如 /data/composer-cache 或 C:\Users\Alice\AppData\Roaming\Composer\Cache)。
常见误判点:
- 在 CI/CD 中用
root执行过composer install,之后普通用户运行config --global cache-dir仍会显示全局路径,但权限已不匹配 - Windows 上把
%APPDATA%\Composer\Cache直接粘贴进资源管理器地址栏时,需确保启用了“在地址栏中显示完整路径”选项,否则可能跳转失败
怎么快速判断要不要清理
查完路径,立刻看真实占用。不到 200 MB 基本不用动;超 1.5 GB 且对应项目半年没维护,才值得动手。
Linux/macOS 下一行搞定:
du -sh $(composer config --global cache-dir)
Windows 用户把上一步命令输出的路径粘贴进资源管理器地址栏,右键 → “属性”,看“大小”而非“占用空间”(NTFS 压缩可能导致差异)。
重点观察子目录分布:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
files/:存 ZIP/TAR 包,单个大包(如 Laravel UI)可达 100+ MB -
vcs/:Git 克隆缓存,默认被composer clear-cache跳过,但单个裸仓库常占 300–800 MB,还耗尽 inode -
repo/:JSON 元数据,通常很小(几十 MB),删了会导致首次update变慢
为什么 composer clear-cache 清完磁盘没变化
最常见三个原因:
- 你真正想删的是
vendor/目录——它不属于 Composer 缓存体系,clear-cache完全不碰它 -
vcs/目录默认不清理,而它恰恰是磁盘占用主力;必须手动删:rm -rf ~/.composer/cache/vcs/*(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) - 临时文件堆积在
sys_get_temp_dir()(通常是/tmp或C:\Users\*\AppData\Local\Temp),clear-cache根本不处理这些composer_*.zip和php*.phar
另外,如果提示 Cache directory does not exist,大概率是权限错乱(比如之前用 sudo composer install 写过缓存)或路径被 COMPOSER_CACHE_DIR 指向了一个不存在的目录。
CI/CD 或无交互环境里卡住怎么办
GitHub Actions、GitLab CI 等场景下,composer clear-cache 默认会等待交互确认,直接 hang 住。
必须加参数:
-
--no-interaction:跳过所有提示 -
--dry-run:先预检,确认输出的路径是否指向预期位置(比如 NFS 挂载点而非本地小磁盘)
如果仍卡住,说明有进程锁着缓存目录:
- Linux/macOS:
lsof +D $(composer config --global cache-dir) - Windows:需下载
handle.exe(Sysinternals 工具),运行handle.exe -p php.exe | findstr "Cache"
杀毒软件、PHPStorm 文件索引、甚至 find 命令扫描缓存目录都可能造成锁。临时禁用相关服务再试。
真正容易被忽略的是 vcs/ 目录——它既不被默认清理,又不随 clear-cache 的 --dry-run 显示,但却是磁盘告警的头号推手。手动删前务必确认没有 composer update 进程在后台跑,否则可能触发 Corrupted cache file 错误。

















