thinkphp 8.1缓存文件分散在runtime/子目录中,真实模板缓存路径需用var_dump(config('template.template_cache_path'))确认;若为空则回退至runtime/template/,且非法路径会被静默忽略。

ThinkPHP 8.1 的缓存文件默认不直接暴露在项目根目录,而是按类型分散在 runtime/ 及其子目录中。要准确找到它们,不能只看配置文件写了什么,得让框架告诉你“此刻真正用的是哪个路径”。
查看模板缓存实际路径
模板编译后的 PHP 文件(如 index.html.php)存在 template 缓存目录里。但这个路径可能被配置错误或权限问题悄悄改写:
- 在任意控制器或命令行中执行:var_dump(config('template.template_cache_path')); —— 这输出的才是当前生效的真实路径
- 若输出为
null或空字符串,说明配置未生效,会退回到默认值:runtime/template/ - 特别注意:含
../、中文、emoji 或非 ASCII 字符的路径会被静默忽略,务必用英文路径
定位配置缓存文件
当 app_debug = false 时,框架会把所有配置合并写入一个 PHP 文件,供快速加载:
- 该文件固定为:
runtime/config.php - 它只在运行
php think config:cache后生成,且必须确保runtime/目录可写 - 如果修改了
.env或config/app.php却没更新,先删掉这个文件,再重跑命令
其他常见缓存位置
不同功能模块使用独立子目录,避免混杂:
-
数据缓存(如
Cache::store('file')->get()):默认在runtime/cache/ -
日志缓存(如日志轮转备份):在
runtime/log/下按日期分目录 -
HTML 静态缓存(开启
HTML_CACHE_ON):默认生成在html/根目录(非 runtime),需 Web 服务器有读取权限 -
路由缓存(
php think route:cache):生成在runtime/route/,文件名含哈希
排查缓存没更新的常见原因
改了模板却还是旧内容?别急着删整个 runtime,先确认这几项:
- 检查
template.cache配置是否为true(开发环境建议设false) - 确认
cache_prefix不为空、不纯数字,例如设为'tp8_shop_' - OPCache 是否缓存了
runtime/template/下的文件?可在php.ini中加:opcache.file_exclude=".*runtime.*" - Web 进程用户(如
www-data)对对应目录是否有读写权限?用ls -l runtime/查看属主
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











