ThinkPHP6缓存清理需按环境区分:测试环境可用php think clear --all或手动删runtime/cache/;正式环境须分步清理文件、模板、Redis及路由缓存,并禁用log/trace删除。

ThinkPHP6测试环境和正式环境缓存清理方法不能直接通用,因正式环境常启用Redis等外部缓存驱动、禁用调试模式、限制文件写入权限,而测试环境多依赖file驱动且权限宽松,混用会导致清理不全或操作失败。
确认当前环境缓存驱动类型
打开项目根目录下的config/cache.php,检查default配置项值:若为'file',说明走本地文件缓存;若为'redis',则需连接Redis服务并按前缀清理。
执行php think version和php -i | grep "Loaded Configuration File",确保读取的是当前环境实际加载的配置文件,而非开发机残留的.env或缓存配置。
【误判驱动类型会导致90%的清理失效——比如配置写了redis但扩展未安装,框架会静默fallback到file,此时只清Redis就完全漏掉真实缓存】
立即学习“PHP免费学习笔记(深入)”;
测试环境推荐清理方式
方法一:命令行一键清空(适用单应用+file驱动)
进入项目根目录,执行:php think clear --all。该命令会删除runtime/cache/、runtime/log/、runtime/session/、runtime/trace/、runtime/view/、runtime/route.php全部内容。
方法二:手动删runtime/cache子目录(更可控)
运行rm -rf runtime/cache/*,保留runtime/下其他目录(如log、temp),避免影响日志记录或模板编译。
方法三:代码中调用(适合接口触发)
在控制器里写think\facade\Cache::store('file')->clear();,注意必须显式指定store('file'),否则可能清错驱动。
正式环境必须分步清理
第一步:先清文件类缓存
执行php think clear -f,仅清理runtime/cache/、runtime/log/等运行时文件,避开runtime/view/和runtime/route.php——防止首次访问变慢或404。
第二步:单独清理模板缓存
运行php think clear:template(TP6.1+支持),或手动删除runtime/view/目录:rm -rf runtime/view/*。若config/template.php中自定义了cache_path,需按该路径删除,否则无效。
第三步:强制刷新Redis缓存
先确认Redis连接正常:redis-cli -h [host] -p [port] -a [password] ping;再按ThinkPHP默认前缀清除:redis-cli -h [host] -p [port] -a [password] --scan --pattern "think_cache:*" | xargs -r redis-cli -h [host] -p [port] -a [password] del。
第四步:清除路由缓存
执行php think route:clear,该命令会重建runtime/route.php;若命令不可用(如TP5兼容层残留),直接rm runtime/route.php,框架会在下次请求时自动重生成。
跨环境清理脚本避坑要点
不要在正式环境使用php think clear --all——它会连带删除runtime/log/,导致线上问题无法追溯。
写自动化脚本时,必须用env('APP_ENV') === 'production'判断环境,正式环境跳过runtime/log/和runtime/trace/的删除逻辑。
所有涉及Dir::delete()的操作,路径末尾必须加/,例如Env::get('runtime_path') . 'view/';不加斜杠可能导致误删整个runtime/目录。



















