ThinkPHP6中runtime是总仓库,cache仅为其子目录之一;删错位置会导致模板不更新、路由404等问题,需按需清理view、temp、data等对应子目录而非仅cache。

刚接触ThinkPHP6的新手常误以为删了runtime目录就等于清了所有缓存,结果改完模板页面还是旧的、路由修改后404依旧存在,其实问题出在没搞清runtime是总仓库、cache只是它里面的一个小抽屉——删错位置不仅白忙活,还可能让日志中断或模板编译失败。
先搞懂runtime和cache到底是什么关系
runtime是ThinkPHP自动生成的“运行时工作区”,必须可写,否则路由缓存生成不了、日志也记不进去;它底下至少包含cache、log、temp、view、data五个子目录,每个干不同的事。cache只是其中负责存储业务层调用Cache::set()写入的数据,默认路径是runtime/cache/,但它不存模板、不存路由、不存日志——这些全在别的子目录里躺着。
直接删整个runtime/目录就像把办公室所有抽屉连同文件柜一起砸了:log/里正在写的错误日志会中断,temp/里刚编译好的模板PHP文件没了会导致页面报错,view/清空后首次访问会卡顿几秒重新编译。
什么情况下只删cache/就够了
方法一:你只改了用Cache::remember()缓存的用户数据、商品列表这类业务数据,且确认没动模板、路由、配置。
立即学习“PHP免费学习笔记(深入)”;
执行:【php think clear:cache】(TP6.1+支持)或手动删runtime/cache/下的全部文件(保留cache/目录本身)。
注意:如果用了Redis/Memcached作为缓存驱动,这个命令只删本地文件缓存,不会清Redis里的数据——得单独连Redis执行FLUSHDB。
哪些情况必须连带清理其他目录
第一步:模板文件(.html/.php)改了但页面没变 → 说明runtime/view/或runtime/temp/里的编译文件还在生效,必须清这两个目录。
第二步:新增或修改了route.php里的路由规则,访问却报404 → runtime/data/route.php没更新,要单独删掉它或执行【php think route:clear】。
第三步:配置文件(config/app.php等)改了但不起效 → runtime/data/config.php被缓存,删它即可,别动runtime/cache/。
第四步:日志文件越滚越大想释放空间 → 只删runtime/log/下的历史日志文件,保留log/目录结构,否则下次写日志会报错。
最稳妥的一键清理方案
方法一:强制清整个runtime/下所有内容(适合开发环境调试)
执行:【php think clear --all】 —— 这会清空cache/、log/、temp/、view/、data/全部子目录,但保留runtime/根目录及其.gitignore等保护文件。
方法二:手动分目录精准清理(推荐生产环境使用)
进项目根目录,依次执行:
rm -f runtime/cache/*
rm -f runtime/view/*
rm -f runtime/temp/*.php runtime/temp/thinkphp/*
rm -f runtime/data/route.php runtime/data/config.php
rm -f runtime/log/2026-06-* #删6月的日志,留7月的
这一步操作起来很简单,直接把上面四行命令复制粘贴进终端回车就行。删完不用重启服务,下次请求自动重建所需文件。



















