根本原因是只删cache和log却漏掉temp的哈希编译文件及data的route.php、config.php;需先确认缓存驱动类型,再按顺序清理runtime各子目录,保留log和temp空目录,并禁用模糊删除命令。

ThinkPHP6运行时缓存手动删除不彻底,常导致模板修改不生效、新路由404、配置变更被忽略——根本原因是只删了Cache和Log目录,却漏掉了Temp里带哈希名的编译文件和Data里的route.php、config.php等关键缓存。
确认当前缓存驱动类型
打开config/cache.php,检查default值及stores.file.path路径。若配置中'driver' => 'redis',则文件系统清理无效,应跳转至Redis清理步骤;【必须先确认这点,否则所有手动删除操作都白做】。多数本地开发环境仍用file驱动,路径默认为runtime/cache/,但实际生效路径可能被env('cache.path')覆盖。
分层清理Runtime目录
进入项目根目录,按以下顺序执行命令,顺序不可颠倒:
第一步:清空基础缓存与日志内容
rm -f Runtime/Cache/* Runtime/Log/*
第二步:强制清除模板编译产物
rm -f Runtime/Temp/*.php Runtime/Temp/thinkphp/*
这一步最关键——Temp下文件名形如abcd1234_template_index.html.php,不删它,哪怕改了模板HTML,页面仍渲染旧内容。
第三步:删除数据级缓存文件
rm -f Runtime/Data/route.php Runtime/Data/config.php Runtime/Data/*.php
【route.php不删,Route::rule()定义的新路由永远不会加载】
注意:保留Runtime/Log和Runtime/Temp这两个空目录本身,防止后续写入日志或编译时报错“Directory not found”。
一键清理脚本(防手抖)
在项目根目录新建clear_runtime.sh,粘贴以下内容:
#!/bin/bash
cd "$(dirname "$0")"
rm -f Runtime/Cache/* Runtime/Log/*
rm -f Runtime/Temp/*.php Runtime/Temp/thinkphp/*
rm -f Runtime/Data/route.php Runtime/Data/config.php Runtime/Data/*.php
赋予执行权限:chmod +x clear_runtime.sh
以后只需运行:bash clear_runtime.sh
⚠️ 切勿使用find . -name "*.php" -delete这类模糊命令——它会误删app/或thinkphp/下的源码文件。
Redis驱动下如何清缓存
方法一:用redis-cli按前缀安全清理
redis-cli --scan --pattern "think_cache:*" | xargs redis-cli del
该命令只删ThinkPHP写入的缓存键,不会影响其他业务数据。
方法二:代码中调用清除接口
在命令行或控制器里执行:Cache::store('redis')->clear();
前提是config/cache.php中已正确定义redis store且连接正常。
若使用了缓存标签(tag),例如Cache::tag('user')->set('info', $data),必须用Cache::tag('user')->clear(),普通clear()对其无效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











