composer clear-cache --expired 仅删除 files/ 子目录下修改时间超过 cache-files-ttl(默认180天)的 .zip/.tar.gz 归档文件,不清理 repo/、vcs/ 等其他缓存子目录,也不校验文件内容或哈希。

composer clear-cache --expired到底清什么
composer clear-cache --expired 并不是清“过期 ZIP 包”,而是只删 files/ 子目录下超过 cache-files-ttl 配置值(默认 180 天)的归档文件,其他子目录(repo/、vcs/)完全不动。它不检查文件内容或哈希,只看修改时间。
这个命令实际等价于:find ~/.composer/cache/files -name "*.zip" -o -name "*.tar.gz" -mtime +180 -delete
- 必须先确认 TTL 值:运行
composer config --global cache-files-ttl,若输出为空,说明用的是默认 180 天 - 如果缓存里全是近 3 个月下载的包,
--expired执行后可能显示 “Cleared 0 files” —— 不是命令失效,是真没过期 - 它不会清理
vcs/下废弃 Git 仓库,也不会碰repo/packagist.org/的元数据快照 - Windows 用户注意:
find命令不可用,--expired在 Windows 上仍有效,但底层逻辑由 Composer 自行实现,行为一致
手动删指定包的缓存文件夹怎么操作
Composer 没有 composer clear-cache monolog/monolog 这种语法,但你可以直接进 files/ 目录按包名删。路径结构固定为:~/.composer/cache/files/vendor/name/,比如 monolog/monolog 对应 ~/.composer/cache/files/monolog/monolog/。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先确认缓存根路径:
composer config --global cache-dir - 进入
files/子目录:cd $(composer config --global cache-dir)/files(Linux/macOS) - 找包名对应目录:包名中的
/会转成目录分隔符,symfony/console→symfony/console/ - 安全删除:
rm -rf vendor/package-name(注意别漏掉vendor/前缀,否则可能误删同名顶层目录) - 删完立刻生效:下次
composer install或update会重新下载该包,不走本地缓存
为什么手动删了 files/ 下的包,composer install 还报 Failed to extract
常见现象是删了 files/monolog/monolog/1.25.0.zip,但 composer install 仍卡在解压失败。根本原因往往不是 ZIP 损坏,而是 Composer 已把该包解压到 vcs/ 或临时工作区,且残留了损坏的 unpacked 内容。
- 先检查错误是否精确指向某个 ZIP 文件路径,如果是,说明缓存确实损坏,删对了位置
- 但如果报错信息含
corrupted archive却没指明文件,大概率是vcs/下某个 Git 仓库裸目录损坏(尤其私有 Git 包),此时要删~/.composer/cache/vcs/对应 hash 目录 - 更稳妥的做法:删完
files/对应包后,加--no-cache强制跳过所有缓存层:composer install --no-cache - 别删
repo/下的内容来“治”解压失败——那是元数据,和压缩包完整性无关
CI/CD 中手动清理缓存前必须确认的三件事
在 GitHub Actions、GitLab CI 或 Docker 构建中手删缓存,比本地更易翻车。不是命令不对,是环境状态没对齐。
- 确保没有并发 composer 进程:CI 脚本里不能一边
composer install一边跑rm -rf ~/.composer/cache,否则触发Corrupted cache file - 确认用户权限一致:Docker 容器里若用
root跑过 install,后续非 root 用户执行clear-cache会因权限拒绝而静默失败;建议统一用非 root 用户,或用chown -R $USER:$USER ~/.composer/cache - 检查是否挂载了共享缓存卷:很多团队把
~/.composer/cache挂到 NFS 或 host 目录,clear-cache只清容器内路径,宿主机缓存还在;得在宿主机上同步清理,或改用--cache-dir /tmp/composer-cache避免跨环境污染
真正容易被忽略的是:cache-files-maxsize 配置启用后,Composer 会在写入时自动淘汰旧包,手动清缓存反而打断这个机制,导致首次安装变慢、网络请求暴增。










