composer clear-cache 仅删除 ~/.composer/cache/(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)下的 repo/、files/、vcs/ 三类缓存,不触碰 vendor/、composer.lock、composer.json 及全局配置。

composer clear-cache 会删掉哪些文件?
它只动 ~/.composer/cache/(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)下的三类内容:repo/(包元数据 JSON)、files/(解压前的 .zip/.tar)、vcs/(Git 浅克隆缓存)。不会碰 vendor/、composer.lock、composer.json,也不改全局配置。
什么情况下必须用 clear-cache,而不是重装 vendor?
清缓存不是“万能重启键”,只在特定场景真正有效:
- 执行
composer install报Failed to extract xxx: unable to decompress archive,且磁盘空间和权限正常——大概率是某个.zip缓存损坏 - 刚切了国内镜像源(比如从 packagist.org 换成阿里云),但
composer require仍提示Package not found——旧源的元数据还卡在repo/里 - 加了私有仓库到
repositories并更新了auth.json,但认证仍失败——部分凭证信息被缓存在repo/的响应中 - CI 机器上
Could not parse version constraint偶发出现,重启 job 又好了——元数据缓存解析异常
clear-cache 后为什么 dependency 还是旧的?
因为 composer.lock 会强制锁定版本。清缓存 ≠ 升级依赖。例如你写的是 "monolog/monolog": "^2.0",即使 3.0 已发布,composer update 仍只会装 2.x 最新版。
- 想升到突破性版本(如 2→3):必须手动改
composer.json - 想尝试升到约束范围内最新版:用
composer update --with-all-dependencies - 想彻底重来(比如换 PHP 版本后重建):先
composer clear-cache,再删composer.lock和vendor/,最后composer install
清理前该确认什么?别盲目跑命令
先看缓存实际占多大,避免白忙活:
- 查路径:
composer config --global cache-dir或composer diagnose(看Cache directory行) - 看大小(Linux/macOS):
du -sh $(composer config --global cache-dir);Windows 可进资源管理器直接看属性 - 想预览不真删:
composer clear-cache --dry-run(部分新版支持,非所有版本) - 注意 WSL 用户:别在 Windows 子系统里误删 Linux 的
~/.composer/cache,路径不互通
企业镜像源(如腾讯云 TKE 镜像)可能自带 HTTP 缓存头 X-Composer-Cache-TTL,本地清完也可能拉到过期元数据——这时得等镜像源 TTL 到期,或临时切回官方源验证。










