thinkphp6各版本clear命令行为不同:6.0仅删runtime/cache/、data/、log/目录且不触发驱动清理;6.1通过容器调用接口并默认flushdb,支持--except参数;6.2强化多应用隔离,需用--app指定上下文,否则漏清非默认应用缓存。

ThinkPHP6不同版本(6.0、6.1、6.2)清缓存命令表面一致,但底层行为和可用参数存在关键差异:6.1起移除think-filesystem依赖影响缓存路径解析逻辑,6.2强化了多应用缓存隔离机制,执行php think clear时若未指定应用上下文,可能漏清非默认应用的runtime缓存目录。
确认当前TP6版本
进入项目根目录,运行php think version查看输出;不要凭记忆或文档截图判断,6.0.0与6.2.3的clear命令对redis驱动的处理逻辑已不兼容。
【必须先执行这步】 版本误判会导致--except=redis参数被忽略(6.0不识别该参数)或--app参数失效(6.1未启用多应用扩展时会报错)。
php think clear 命令在各版本的实际行为
6.0.x:仅遍历删除runtime/cache/、runtime/data/、runtime/log/三个目录下的文件;不触发任何缓存驱动的清理接口,redis/memcached配置完全无效。
6.1.x:引入容器注入机制,调用CacheInterface::clear()和TemplateCacheInterface::clear();若配置了redis驱动,默认执行FLUSHDB(注意:不是按前缀清理);新增--except参数,但仅支持file、redis、memcached三类,不识别swoole。
6.2.x:默认启用多应用模式校验,执行php think clear时自动检测APP_NAME环境变量;若未设置且存在多个应用目录(如app/admin/、app/api/),只清理app/下的runtime,其余应用的runtime/admin/、runtime/api/被跳过。
安全清理全部缓存的实操路径
第一步:检查缓存驱动类型
打开config/cache.php,确认default值及stores中各驱动的type字段;file驱动走本地目录删除,redis驱动需额外执行FLUSHDB或按前缀清理。
第二步:按版本选择命令组合
→ 6.0项目:先php think clear → 再手动rm -rf runtime/view/(模板缓存不在默认清理范围)→ 若用redis,单独连redis-cli执行FLUSHDB(注意别连错库)。
→ 6.1项目:直接php think clear --except=file可跳过文件缓存只清redis;但若同时用了redis+memcached,必须分两次执行:php think clear --except=memcached → php think clear --except=redis。
→ 6.2项目:必须指定应用上下文,例如清理admin应用缓存要加--app=admin参数;若不确定应用名,先查.env中APP_NAME值,再执行php think clear --app=xxx。
第三步:验证是否清干净
访问任意页面后立即执行ls -la runtime/cache/,若仍有大量.php文件,说明模板缓存或标签缓存未清——此时需补删runtime/view/并确认是否用了Cache::tag(),标签缓存必须用Cache::tag('xxx')->clear()单独清除。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











