composer clear-cache 清除本地下载缓存(.zip/.tar、packages.json、VCS浅拷贝),不删 vendor/ 或 composer.lock;适用于缓存损坏、镜像切换后元数据未更新等场景。

composer clear-cache 能清掉本地所有已下载的包归档(.zip/.tar)、元数据(packages.json)和已解析的锁文件缓存,但不会动 vendor/ 目录或 composer.lock —— 它只管「下载前用的缓存」。
执行 composer clear-cache 后实际删了哪些东西
命令会扫描并删除以下三类路径下的内容(具体位置因系统而异):
-
COMPOSER_HOME/cache/files/:所有已下载的包压缩包(比如monolog/monolog/2.9.1.0-zip) -
COMPOSER_HOME/cache/repo/:各仓库(如 packagist.org)返回的packages.json缓存,含搜索结果、包列表、版本信息 -
COMPOSER_HOME/cache/vcs/:Git 仓库克隆的浅拷贝(用于vcs类型包),不是完整 clone,但足以加速后续 install
什么情况下必须用 clear-cache,而不是重装或删 vendor
遇到这些情况才真正需要它:
- 反复
composer install报错Failed to extract xxx: unable to decompress archive,且确认磁盘空间和权限正常 —— 很可能是某个 zip 缓存损坏 - 刚切换了 Packagist 镜像源(比如从官方切到阿里云),但
composer require仍提示 “Package not found”,说明旧镜像的元数据缓存还在生效 - 本地修改过
composer.json的repositories,加了私有包源,但composer search找不到新包 —— 缓存没刷新 - CI 环境中偶发
Could not parse version constraint ^x.y.z,重启 job 后又好了 —— 元数据缓存解析异常
clear-cache 不解决的问题,别指望它
它不碰这些地方,所以以下问题跟它无关:
-
vendor/目录里的代码、自动加载映射(vendor/autoload.php)—— 这得靠composer install或composer update -
composer.lock文件本身 —— 清缓存后运行composer install仍按 lock 文件还原依赖 - 全局配置(
~/.composer/config.json)或项目级auth.json—— 凭证错误要单独检查 - PHP OPcache 或 APCu 缓存 —— Composer 运行时不会读它们,但如果你写了个自定义插件用了 OPcache,那得手动
opcache_reset()
最常被忽略的一点:某些企业镜像(如腾讯云 TKE 的 Composer 镜像)会在响应头里加 X-Composer-Cache-TTL,即使你清了本地缓存,如果镜像源自己缓存了旧的 packages.json,你依然可能拉到过期元数据。这时候得等镜像源 TTL 过期,或者临时换回官方源验证。










