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 最新版。