thinkphp缓存清理需分层清除runtime四类目录:cache、log、temp(关键,含template_*.php)、data(含route.php/config.php),仅删cache无效;验证须查文件存在性或触发重编译。

ThinkPHP缓存清理失败反复出现,不是删了Runtime/Cache就完事——Temp目录里残留的模板编译PHP文件仍在执行,Data目录里的route.php或config.php还在被require,旧逻辑照常跑,改了代码也白改。
确认缓存是否真清干净
别信命令返回的“success”,直接查文件是否存在:运行ls -l Runtime/Temp/*.php Runtime/Data/route.php,只要任一结果非空,说明缓存根本没清透。
用php think clear:cache后仍报模板错误?大概率是Runtime/Temp下还躺着template_开头的哈希文件,框架跳过重新编译,硬着头皮执行损坏的旧编译体。
检查当前缓存驱动是否生效:在控制器里加一行dump(Cache::getDriverName());,输出不是file却去删runtime/cache,纯属白忙活。
手动分层清理Runtime四类缓存
第一步:清日志与基础缓存
进入项目根目录,执行:rm -f Runtime/Cache/* Runtime/Log/*
第二步:清模板编译层(关键!)rm -f Runtime/Temp/*.php Runtime/Temp/thinkphp/*
【必须删掉Temp下所有.php文件,否则模板修改永不生效】
第三步:清数据缓存层rm -f Runtime/Data/*.php
特别注意:单独删route.php和config.php,这两文件不重建会导致路由失效、配置读错。
第四步:保留目录结构但清空内容
不要rm -rf Runtime/Log,只清空其内容;否则下次写日志时因目录不存在而静默失败,错误无迹可寻。
防手抖的一键清理脚本
在项目根目录新建clear_runtime.sh,内容如下:
#!/bin/bash<br>echo "正在清理 Runtime 缓存..."<br>rm -f Runtime/Cache/* Runtime/Log/*<br>rm -f Runtime/Temp/*.php Runtime/Temp/thinkphp/*<br>rm -f Runtime/Data/*.php Runtime/Data/route.php Runtime/Data/config.php<br>echo "清理完成"
赋予执行权限:chmod +x clear_runtime.sh
以后只需运行:bash clear_runtime.sh
【严禁用 find . -name "*.php" -delete 这类命令,极易误删 application/ 下的控制器或模型文件】
验证清理是否真正生效
方法一:强制触发模板重编译
临时把app_debug = true设为true,刷新页面,观察Runtime/Temp下是否生成新template_xxx.php——有新文件生成,说明旧编译体已失效。
方法二:直读缓存文件是否存在
执行php -r "var_dump(file_exists('Runtime/Temp/template_1a2b3c4d5e_index.html.php'));",输出bool(false)才算清干净。
方法三:检查路由是否加载新规则
在路由定义文件里加个测试路由Route::get('test-clear', function(){return 'cleared';});,访问/test-clear能返回内容,证明Data/route.php已被重建。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











