thinkphp6.0与6.1清缓存命令表面相同但底层差异大:6.0仅遍历删除runtime下指定目录,不触redis或view;6.1通过容器调用接口,自动清理redis(flushdb)和模板(runtime/view/),并支持clear:template和--all参数,6.0执行会报错。

ThinkPHP6.0和6.1版本清缓存方式表面命令相似但底层逻辑不同,执行效果可能完全不一致,直接套用旧版命令会导致Redis没清、模板漏删或路由缓存残留。
底层清理机制差异
TP6.0的php think clear是简单目录遍历删除,只清runtime/cache/、runtime/log/等文件,不会触达Redis或模板目录;TP6.1起该命令通过容器调用CacheInterface和TemplateCacheInterface,能联动触发Redis的FLUSHDB、自动识别并清理runtime/view/下的模板编译文件。
TP6.1新增php think clear:template专用命令,TP6.0不支持——若在6.0环境执行会报错“Command not found”。
【必须先执行 php think version 确认当前版本】,仅凭项目目录名或composer.json判断极易出错。
模板缓存清理方式
方法一:TP6.1+ 推荐命令
执行php think clear:template,自动定位config/template.php中cache_path配置的路径并清空,兼容自定义模板引擎路径。
方法二:TP6.0及所有版本通用
手动删除runtime/view/目录:
Linux/macOS:执行rm -rf runtime/view/;
Windows CMD:执行rd /s /q runtime\view。
注意:不能只删runtime/view/*.php,因为模板按哈希分散在多层子目录中,通配符无法穿透。
Redis缓存是否被清理
第一步:确认当前缓存驱动是否为redis
检查config/cache.php中'default' => 'redis'且'stores.redis.type' === 'redis'已正确配置。
第二步:执行清理命令
TP6.1+:直接运行php think clear,自动清理Redis和文件缓存;
TP6.0:该命令对Redis无任何作用,必须额外执行php think cache:clear --type=redis。
第三步:验证Redis是否清空
连接Redis客户端执行KEYS *,若返回空数组则成功;若仍有大量key,说明TP6.0环境下漏执行了--type=redis参数。
一键清空全部缓存(含Redis+模板+路由)
TP6.1+ 可直接运行:php think clear --all,该命令会清runtime/cache/、runtime/log/、runtime/temp/、runtime/route/、runtime/view/,并触发Redis FLUSHDB。
TP6.0 不支持--all参数,强行使用会提示“Unknown option --all”;必须分步执行:php think clear → php think cache:clear --type=redis → rm -rf runtime/view/ → php think route:clear。
若已在TP6.0项目中自定义了ClearAll命令类,则需确保其内部调用顺序为:先$this->call('clear'),再显式调用Redis清理逻辑,最后执行File::deleteDir(runtime_path('view'))。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











