必须删除runtime/view/整个目录,因thinkphp按模板路径哈希分目录(如runtime/view/7a/8b/cd/template_index.html.php),人工无法穷举,通配符rm runtime/view/*.php会漏删;tp6.1+可用php think clear:template精准清除。

模板缓存没更新,改了模板却还报旧错(比如变量未定义、语法错误或逻辑跳转异常),本质是 runtime/view/ 下的旧编译 PHP 文件仍在被直接 require 执行,框架完全跳过了模板解析流程。清不干净,错误就反复出现。
必须删 runtime/view/ 整个目录
别只删部分文件或用通配符 rm runtime/view/*.php——ThinkPHP 按模板路径哈希分目录(如 runtime/view/7a/8b/cd/template_index.html.php),人工无法穷举。正确做法是彻底清空:
- Linux/macOS:
rm -rf runtime/view/ - Windows CMD:
rd /s /q runtime\view - 若用 Git 管理,确认 .gitignore 已排除 runtime/,避免误提交残留文件
命令行一键清理(TP6.1+ 支持)
执行以下命令可精准清除模板缓存,比手动删更可靠,且兼容多应用结构:
-
php think clear:template—— 专清 runtime/view/,不碰其他缓存 - 如需连带清路由、配置、数据缓存:用
php think clear --all,但注意它 默认不含 template,所以仍建议单独加一行clear:template
开发阶段让错误不再复现
靠每次手动清太被动。直接在 config/template.php 中关闭缓存或强制校验:
- 彻底禁用:
'cache' => false(TP5.1+ 支持,改完即生效) - 保留缓存但实时响应修改:
'cache_time' => 0,框架会自动对比源模板文件修改时间(mtime),有变就重编译 - 避免软链接路径导致误判(尤其 Docker 或 NFS 环境):加上
'realpath' => true
验证是否真清干净
别只信命令返回 success。立刻验证:
- 访问一个刚改过的模板页面,再检查
runtime/view/是否为空目录 - 在控制器里加一行:
dump(is_dir(runtime_path() . 'view/'));,输出false才算删到位 - 如果错误还在,检查 Nginx/Apache 是否把请求错误地转发给了 PHP 而非直供静态资源(尤其是 .html 后缀模板被当成普通文件处理)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











