Composer clear-cache命令详解 彻底清除本地缓存数据【操作】

10次阅读

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

Composer clear-cache命令详解 彻底清除本地缓存数据【操作】

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.jsonrepositories,加了私有包源,但 composer search 找不到新包 —— 缓存没刷新
  • CI 环境中偶发 Could not parse version constraint ^x.y.z,重启 job 后又好了 —— 元数据缓存解析异常

clear-cache 不解决的问题,别指望它

它不碰这些地方,所以以下问题跟它无关:

  • vendor/ 目录里的代码、自动加载映射(vendor/autoload.php)—— 这得靠 composer installcomposer 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 过期,或者临时换回官方源验证。

text=ZqhQzanResources