ThinkPHP 5 缓存路径由 RUNTIME_PATH 基础目录决定,模板缓存为 RUNTIME_PATH.'cache/',数据缓存可在 config/cache.php 中通过 'path' 显式指定,静态页缓存由 HTML_DIR 拼接 APP_PATH 决定,模型缓存固定为 RUNTIME_PATH.'model/',所有子目录均依赖 RUNTIME_PATH 存在且 Web 用户具备读、写、执行权限。

ThinkPHP 5 的缓存路径不是靠单个“path”配置项一设了之,而是由多个层级决定:运行时根目录(RUNTIME_PATH) + 具体缓存类型子目录 + 框架默认逻辑或显式配置。关键在于先稳住 RUNTIME_PATH,再按需调整各类缓存的落点。
RUNTIME_PATH 是所有缓存路径的基础
RUNTIME_PATH 是 ThinkPHP 5 默认定义的常量,指向 ROOT_PATH . 'runtime/'(即项目根目录下的 runtime/ 文件夹)。模板缓存、数据缓存、日志、模型缓存等,都以它为父目录生成子路径。
- 若未修改,默认值为:
/your-project-path/runtime/ - 所有缓存子目录如
cache/、log/、temp/、model/都建在它下面 -
必须确保该目录存在,且 Web 进程用户(如 www-data)有读、写、执行(x)权限 —— 缺少
x权限会导致无法进入目录,mkdir直接失败(常见报错:“Permission denied in Cache.php on line 128”)
设置方式(推荐在入口文件 public/index.php 最顶部):
define('RUNTIME_PATH', '/data/www/thinkphp-app-runtime/');✅ 优势:全局生效(Web/CLI/Swoole)、脱离 Web 可访问范围、安全
⚠️ 注意:手动创建该目录,并授权(如 chown -R www-data:www-data /data/www/thinkphp-app-runtime)
各类缓存路径的具体控制方式
-
模板缓存(view cache)
路径实际为RUNTIME_PATH . 'cache/',由CACHE_PATH常量定义,默认值即RUNTIME_PATH . 'cache/'
不建议直接改CACHE_PATH,应优先确保RUNTIME_PATH正确;若真要自定义,也在index.php中早于框架加载时定义:define('CACHE_PATH', RUNTIME_PATH . 'tpl_cache/'); -
数据缓存(File 驱动)
默认使用CACHE_PATH,但可在config/cache.php中指定:'default' => [ 'type' => 'File', 'path' => RUNTIME_PATH . 'data_cache/', // 显式指定路径 ],✅ 这样可与模板缓存物理分离,便于清理或挂载独立磁盘
立即学习“PHP免费学习笔记(深入)”;
-
静态页面缓存(HTML_CACHE)
它不走CACHE_PATH,而是由HTML_PATH决定,但注意:TP5 中HTML_PATH是一个拼接结果,不是直接可配的字符串
实际路径 =APP_PATH . HTML_DIR . '/',而HTML_DIR默认是'Html'(定义在thinkphp/base.php或paths.php)
✅ 修改方法:在index.php中早于框架加载时重定义:define('HTML_DIR', 'static_pages');效果:静态页将生成在
application/Html/→ 改为application/static_pages/ -
模型缓存(model schema cache)
默认路径为RUNTIME_PATH . 'model/',无单独配置项
✅ 确保RUNTIME_PATH可写 +runtime/目录有o+x权限(其他用户可进入)
✅ 首次部署后,用命令触发创建(TP5.1+):php think optimize:schema
不复杂但容易忽略



















