tp6.1中php think clear默认清空所有缓存驱动(含redis的flushdb),不再仅删runtime文件;需用php think clear:template清模板、php think route:clear+build重建路由、php think config:clear清理配置,并按驱动类型谨慎使用--except=file等选项。

ThinkPHP6从6.0升级到6.1后,缓存清理命令的底层行为和可用选项发生了实质性变化,不是简单加个参数就能兼容——比如php think clear在6.0中只删文件,在6.1里可能连Redis也一并清空,不加判断直接执行会误删线上缓存数据。
php think clear 默认行为变了
TP6.0 的 php think clear 仅遍历删除 runtime/cache/、runtime/log/ 等本地目录文件,不触碰 Redis 或 Memcached。
TP6.1 起该命令通过容器调用 CacheInterface 和 TemplateCacheInterface,会触发对应缓存驱动自身的清理逻辑:若配置了 Redis 驱动,【会向 Redis 发送 FLUSHDB 命令】,而非仅删本地 runtime 文件。
这意味着你没改任何代码,只升级了框架,执行同一命令就可能从“清文件”变成“清全库”。
新增专用模板缓存清理命令
方法一:使用新命令(TP6.1+ 推荐)
php think clear:template
该命令专清 runtime/view/ 下的编译模板,不干扰其他缓存,且自动识别 config/template.php 中的 cache_path 配置。
方法二:仍用旧参数但加 -t(兼容写法)
php think clear -t
注意:-t 在 TP6.1 中依然有效,但仅作用于 ThinkPHP 原生 File 模板引擎;若项目用了 Smarty 或自定义模板驱动,它不会清理那些目录。
路由与配置缓存必须单独处理
第一步:确认是否启用了路由缓存
检查 config/route.php 中 'route_cache' => true 是否开启。若开启,php think clear 会连带清理 runtime/route/,但部分场景下该目录残留会导致 404。
第二步:强制重建路由缓存
执行 php think route:clear → 再执行 php think route:build
第三步:验证配置缓存是否生效
TP6.1 默认启用配置缓存(runtime/config.php),升级后若 config 目录有改动却没刷新,页面可能加载旧配置。运行 php think config:clear 可单独清理此项。
多缓存驱动场景下的安全清理路径
先查当前缓存驱动类型:
打开 config/cache.php,看 'default' => 'redis' 还是 'file'。
如果是 redis:
执行 php think clear --except=file 可跳过文件缓存,只清 Redis;但【务必确认 Redis 实例未被其他服务共用】,否则 FLUSHDB 会连带清掉其他业务数据。
如果是 file 且含 tag 缓存:
不能靠删目录解决。需在代码中调用 Cache::tag('user')->clear(),命令行无对应指令。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











