ThinkPHP缓存目录默认为runtime/cache/,但实际路径需通过config/cache.php中path配置或Cache::init()获取的运行时路径确认;若cache/目录不存在,需检查缓存驱动是否启用、权限是否正常或触发写入后查看。

ThinkPHP新手常因找不到缓存目录而无法手动清理、排查缓存污染或调试数据写入问题,尤其在开发环境修改配置后缓存未生效时,必须确认实际写入路径才能准确定位。
用命令行快速列出项目根目录下的 runtime 结构
打开终端,进入 ThinkPHP 项目根目录(即包含 app、public、think 文件的那层),执行:
Linux/macOS:tree -L 2 -I "log|temp|route|html" runtime
Windows PowerShell:Get-ChildItem runtime -Depth 1 -Exclude log,temp,route,html
这一步会直接暴露 runtime 下所有一级子目录,cache/ 是否存在、是否为空、是否被重命名一目了然。如果 cache/ 目录根本没出现,说明缓存驱动没启用或配置指向了其他路径。
查 config/cache.php 确认当前缓存驱动和路径
打开 config/cache.php,重点看两个位置:
立即学习“PHP免费学习笔记(深入)”;
① 找到 'default' => 'file' 或类似设置,确认当前默认驱动是 【File】;如果不是,后续所有文件路径操作都无效。
② 在 'stores' => ['file' => [...]] 块内,查找 'path' 配置项——它才是真实缓存目录。常见值有:CACHE_PATH(对应常量定义,在 thinkphp/library/think/Env.php 或 runtime.php 中可查)APP_PATH . 'runtime/cache/'ROOT_PATH . 'storage/cache/'(自定义路径)
注意:若 'path' 为空或未定义,框架将回退到默认路径 【runtime/cache/】,但前提是 CACHE_PATH 常量本身没被覆盖。别只看注释,要盯住实际赋值语句。
用 Cache::init() 获取运行时路径
方法一:在控制器任意方法中临时插入以下代码并访问对应路由:
$cache = \think\facade\Cache::init();<br>var_dump($cache->getOptions()['path']);<br>exit;
方法二:在命令行执行 php think run,粘贴上述两行代码后回车,立即输出当前生效的缓存路径字符串。
这个值是最终落地路径,绕过了配置文件里的常量引用和拼接逻辑,【比看 config 更可靠】。如果输出为空或报错,说明缓存驱动初始化失败,需检查 type 是否拼写错误(如写成 file 而非 File)。
检查 runtime 目录权限与隐藏文件
Linux/macOS 下执行:ls -la runtime/cache/
如果返回 ls: cannot access 'runtime/cache/': No such file or directory,说明目录不存在或被 .gitignore 过滤——此时需触发一次缓存写入(例如调用 Cache::set('test', 'ok')),再执行 ls -la runtime/ 查看是否生成了 cache/ 目录。
Windows 用户注意:资源管理器默认不显示以 . 开头的文件,而某些缓存驱动会在 cache/ 下生成 .htaccess 或 .gitignore,导致目录看似为空。用命令行 dir /a runtime\cache 才能看见全貌。



















