composer clear-cache 清除的是 Composer 全局缓存的包归档(zip/tar)和元数据(如 packages.json),不影响 vendor/ 目录;清理后首次 install/update 会变慢,属正常预期行为。

composer clear-cache 命令到底清什么
composer clear-cache 清的是 Composer 自己下载并本地存储的包归档(zip/tar)和元数据(如 packages.json),不是项目里的 vendor/,也不是系统级临时文件。它主要影响后续 composer install 或 composer update 的首次拉取速度和准确性——比如你刚改了私有仓库的 tag,但 Composer 还拿着旧的缓存元数据,就可能装错版本。
执行前先确认缓存位置和大小
别盲目清,先看看缓存占了多少空间、是否真有必要:
- 运行
composer config --global cache-dir查看当前全局缓存路径(通常是~/.composer/cache或%LOCALAPPDATA%\Composer\cache) - 用
du -sh $(composer config --global cache-dir)(Linux/macOS)或资源管理器(Windows)粗略评估体积 - 如果不到 100MB,且没遇到安装异常,通常不用清
清理时注意权限和并发冲突
直接跑 composer clear-cache 看似简单,但容易踩两个坑:
- 在 CI/CD 流水线中,多个 job 同时执行该命令可能因缓存目录锁竞争失败,报错类似
Failed to remove ... Permission denied—— 建议加--no-interaction并确保单例执行 - 若用 root 或管理员权限装过包,缓存文件可能属主不一致;普通用户再运行
clear-cache会失败。此时需手动删:rm -rf $(composer config --global cache-dir),或切到对应用户执行 - Windows 下杀毒软件有时会锁定缓存文件,导致清理卡住;可临时禁用实时防护再试
清完缓存后 install/update 变慢是正常的
第一次 composer install 会重新下载所有包归档和更新元数据,比有缓存时多花几秒到几分钟(取决于网络和包数量)。这不是命令出错,而是预期行为:
- 如果清完立刻
composer install却提示Could not find package xxx,大概率是 packagist.org 访问受限,不是缓存问题——检查composer config -g repo.packagist是否被误设为私有源 - 想跳过元数据刷新?不行。
clear-cache后首次 update 必须重拉packages.json,无法绕过 - 频繁清缓存还变慢?考虑换镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/










