composer clear-cache仅清除全局缓存目录中files/(.zip/.tar包)、repo/(元数据快照)、vcs/(git裸仓库)三类文件,不删vendor/、composer.lock或项目文件,也不重装包;解决“corrupted archive”等错误需配合--no-cache或手动删vendor。

composer clear-cache 本身不重装任何包,也不修复损坏的 PHP 文件——它只删缓存目录里的 .zip、元数据快照和 Git 克隆副本。想解决“包损坏”,必须配合 --no-cache 或手动删 vendor。
composer clear-cache 到底清哪些文件
它只操作全局缓存目录:~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows),具体包括:
-
files/:已下载但未解压的.zip/.tar.gz包(比如monolog/monolog的压缩包) -
repo/:Packagist 的包列表、版本映射等 JSON 快照(换镜像后不清理,就会继续从旧地址拉包) -
vcs/:Git 仓库克隆缓存(如git@github.com:vendor/repo.git的 shallow clone)
它完全不碰项目内的 vendor/、composer.lock、composer.json,也不会触发任何重新下载或安装动作。
报 “corrupted archive” 或 “Failed to extract” 怎么办
这类错误基本是 files/ 下某个 .zip 写了一半就中断了,解压时直接失败。别急着删整个 vendor:
- 先运行
composer clear-cache,再试composer install—— 大概率立刻解决 - 如果仍报错,加
--no-cache运行:composer install --no-cache;成功则 100% 是缓存问题 - 只针对某一个包反复出错(比如
guzzlehttp/guzzle),可进缓存目录手动删子路径:rm -rf ~/.composer/cache/files/guzzlehttp/guzzle
注意:--no-cache 不是“清缓存”,而是本次跳过所有缓存(包括 repo/ 和 files/),强制走网络下载+解压。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
换镜像源后还是从 repo.packagist.org 拉包?
这是 repo/ 缓存污染的典型表现。哪怕你已执行 composer config -g repo.packagist https://mirrors.aliyun.com/composer/,旧的元数据还在缓存里,Composer 会照着老规则找包,甚至返回 404。
此时必须运行 composer clear-cache,否则新镜像配置等于没生效。尤其在从官方源切到阿里云/腾讯云后出现 Could not find package 却确认拼写无误时,大概率就是这个原因。
为什么 clear-cache 后 composer install 还没重下包
因为 composer install 默认优先复用已解压过的包(存在 ~/.composer/cache/files/ 之外的 dist 缓存位置),而不是每次重解压。清缓存只删了 .zip,没删已解压副本。
- 要真正强制重下所有包,得组合使用:
composer clear-cache && composer install --no-cache - CI/CD 中更稳妥的是临时指定空缓存目录:
COMPOSER_CACHE_DIR=$(mktemp -d) composer install - 别写成
composer install && composer clear-cache—— 缓存清理在安装之后,毫无意义
真正容易被忽略的是:缓存清理只是第一步,是否触发重下载,取决于你后续用不用 --no-cache,以及 composer.lock 是否锁定版本。没有这一步,删了缓存也白删。










