composer clear-cache 仅清除 Composer 下载缓存(如 ~/.composer/cache 中的压缩包和 JSON 元数据),不删除 vendor/、composer.lock 或运行时缓存;install 仍用 lock 文件锁定旧版本,需删 lock 后 update 才拉新版本。

composer clear-cache 能清除所有缓存,但实际效果取决于你用的是哪个 Composer 版本、是否在全局或项目级执行、以及有没有残留的 composer.lock 或 vendor 冗余文件 —— 它只清 Composer 自己维护的下载缓存(~/.composer/cache),不碰项目内的 vendor、composer.lock 或平台级包缓存。
clear-cache 命令到底清什么?
它只清理 Composer 下载包时保存在本地的压缩包(.zip/.tar.gz)和元数据(比如 packagist.org 的 JSON 响应快照),路径通常是:
- Linux/macOS:
~/.composer/cache - Windows:
%APPDATA%\Composer\Cache
不会删除:
-
vendor/目录(那是安装结果,不是缓存) -
composer.lock(这是锁定文件,需手动删或重生成) - PHP OPcache 或 APCu 中的已加载类(Composer 不管运行时缓存)
为什么 clear-cache 后 install 还是旧版本?
因为 composer.lock 会强制复现旧依赖树。即使缓存清了、Packagist 上包已更新,composer install 仍按 lock 文件还原。
- 想拉最新版:先删
composer.lock,再跑composer install或composer update - 只更新某包:用
composer update vendor/package-name,避免全量重算 - 怀疑 lock 文件被意外修改:用
composer validate检查格式合法性
彻底清理的组合操作(慎用)
如果你真要从头开始(比如 CI 环境、调试依赖冲突、或换 PHP 版本后重建):
- 删缓存:
composer clear-cache - 删锁文件:
rm composer.lock(Linux/macOS)或del composer.lock(Windows) - 删依赖目录:
rm -rf vendor(Linux/macOS)或rmdir /s vendor(Windows) - 重装(跳过 lock):
composer install --no-cache,或直接composer update --with-all-dependencies
注意:--no-cache 是让本次命令不读写缓存,不是“清缓存”,别混淆。
真正容易被忽略的是:某些私有仓库配置(如 repositories 在 composer.json 或全局 config)可能让 clear-cache 后首次请求变慢——因为元数据要重新 fetch,且没走本地缓存。这不是 bug,是设计使然。










