thinkphp6.0编译缓存未清干净会导致模板不更新、配置读错、类加载失败;需确认config/template.php中cache_on为true且cache_path指向runtime/temp/,再选用php think clear -t、手动删temp/*或cache::clear('temp')三种方式清理,并检查.gitignore和opcache影响。

ThinkPHP6.0应用编译缓存流程没清干净会导致模板不更新、配置读错、类自动加载失败,哪怕你改了view目录下的HTML文件,页面仍显示旧内容——这不是浏览器缓存,而是runtime/temp/里残留的PHP编译文件在接管渲染逻辑。
确认当前是否启用编译缓存
打开config/template.php,检查cache_path是否指向runtime/temp/(默认路径),同时确认cache_on值为true;若为false,则无需清理编译缓存,直接跳过后续步骤。
这一步不能省——有些项目在调试期已关闭模板缓存,盲目删temp目录反而触发重复编译,拖慢首次访问速度。
三种清理方式按场景选用
方法一:命令行一键清除(开发环境首选)
进入项目根目录,执行:php think clear -t
该命令专清runtime/temp/下所有已编译模板文件,不碰log、route、config等其他目录,安全且精准。
方法二:手动删除目录(多应用或权限受限时)
逐个清理各应用对应的temp子目录:rm -rf runtime/temp/*rm -rf runtime/admin/temp/*rm -rf runtime/api/temp/*
注意:不要用rm -rf runtime/temp整目录删除,否则框架下次启动时无法重建该目录结构,报错Directory not writable。
方法三:代码内临时清除(调试页面嵌入)
在任意控制器或调试入口中加入:\think\facade\Cache::clear('temp');
这行代码会调用TemplateCacheInterface接口,触发TP6原生模板引擎的缓存清空逻辑,比直接删文件更兼容自定义模板驱动。
必须同步检查的两个关键点
第一步:检查runtime/temp/是否被.gitignore排除
如果该目录被Git忽略,某些CI/CD流程会跳过清理动作,导致上线后仍加载旧编译文件;运行ls -la runtime/temp/确认目录存在且非空。
第二步:验证模板修改是否生效
修改一个模板文件(如view/index/index.html),刷新页面;若仍显示旧内容,【立刻检查public/index.php所在目录是否有opcache启用】——OPcache会缓存已编译的PHP文件,需执行sudo systemctl reload php-fpm或重启Web服务才能彻底释放。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











