thinkphp 6.1 缓存按类型分散在 runtime/ 下不同子目录:cache/、log/ 被 php think clear 默认清理;view/(模板)、route.php(路由)、schema/(字段)等需手动或专用命令清除。

ThinkPHP 6.1 的缓存文件不是只存在一个地方,而是按类型分散在 runtime/ 目录下的不同子目录中。你“找不到路径”,大概率是因为没确认清楚缓存类型,或没进对 runtime 的实际位置。
先确认 runtime 目录真实路径
TP6.1 默认把运行时文件(缓存、日志、模板编译等)全放在 runtime/ 目录下,但这个目录不一定就在项目根目录——它由配置决定:
- 默认路径是
项目根目录/runtime/ - 但可通过
config/app.php中的'runtime_path' => __DIR__ . '/../runtime/',自定义 - 更稳妥的方式:在控制器里临时加一行
echo \think\facade\Env::get('runtime_path');访问该接口,就能看到框架当前实际使用的
runtime绝对路径。
⚠️ 注意:如果输出为空或报错,说明
runtime父目录权限不足(缺x执行权限),PHP 进不了这个目录,自然也建不出子目录——此时需先修复权限(见文末提示)。
常见缓存类型及对应删除路径
| 缓存类型 | 实际存放位置 | 是否会被 php think clear 默认清理? |
|---|---|---|
| 普通缓存(cache) | runtime/cache/ |
✅ 是(默认清这4个目录之一) |
| 日志(log) | runtime/log/ |
✅ 是 |
| 模板编译缓存 |
runtime/view/(含多层哈希子目录) |
❌ 否(必须手动删或加 -t 参数) |
| 路由缓存 |
runtime/route.php(单个PHP文件) |
❌ 否(必须用 php think route:clear 或手动删) |
| 模型缓存 | runtime/model/ |
❌ 否(需手动删或触发 optimize:schema) |
| 数据库字段缓存 | runtime/schema/ |
❌ 否(改表后需手动删或重跑命令) |
所以如果你改了模板却没更新,重点看 runtime/view/;
新增路由访问 404,重点看 runtime/route.php;
查数据库慢且结构没变,看看 runtime/schema/ 有没有对应表的 PHP 文件。
找不到 runtime/view/ 或删了又自动建不起来?检查权限
Linux 服务器上常见问题:
-
runtime/目录权限是drw-r--r--(没有x)→ PHP 无法cd进入,导致mkdir runtime/view失败,报 “Permission denied” -
runtime/属主不是 Web 用户(如www-data或nginx),导致 CLI 删除后,Web 请求时无法重建
✅ 正确处理方式:
- 补执行权限:
chmod o+x runtime - 设定属主:
sudo chown -R www-data:www-data runtime - 确保 Web 用户能写:
sudo -u www-data touch runtime/test.txt(测试是否可写)
快速清理建议(按场景)
开发调试,图省事:
php think clear --all(TP6.1+ 支持,会清整个runtime/,包括view/和route.php)只清模板,保留日志和缓存:
php think clear:template只清路由:
php think route:clear-
没命令行权限(如虚拟主机):
- 用 FTP 进入
runtime/,删掉view/整个文件夹 - 找到并删掉
route.php(不是route/目录) - 不要动
config/、temp/(如有)、.gitignore等非缓存文件
- 用 FTP 进入
不复杂但容易忽略。关键是分清缓存类型、找准 runtime 实际位置、再对症下药。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











