php think clear默认只清runtime/cache/、runtime/log/、runtime/session/、runtime/trace/四个目录,不包括runtime/view/模板缓存和runtime/route.php路由缓存,导致模板不更新或路由404。

ThinkPHP6执行php think clear命令后页面仍显示旧内容或报错,不是因为没重启服务,而是缓存文件虽已删除但PHP进程仍在内存中持有旧编译结果、opcache未刷新、或框架启动时从残留路径加载了未清干净的缓存——这些情况与Web服务器是否重启无关,关键在清理动作是否真正覆盖所有缓存层。
php think clear默认清哪些目录
执行php think clear不加任何参数时,只清理runtime/cache/、runtime/log/、runtime/session/、runtime/trace/四个子目录;【不会删runtime/view/模板缓存和runtime/route.php路由缓存】。这意味着你改了模板却仍看到旧HTML,或修改了路由规则却访问返回404,根本原因就是这两处根本没动过。
这一步操作起来很简单,直接在项目根目录运行命令就行。
模板和路由缓存必须单独处理
模板缓存位于runtime/view/,路由缓存是单个文件runtime/route.php,它们不在php think clear默认范围内。
方法一:用-t参数清模板缓存
php think clear -t
方法二:手动删模板目录
rm -rf runtime/view/*
方法三:清路由缓存(TP6)
php think route:clear
【注意:tp5没有route:clear命令,必须手动删runtime/route.php】
为什么清完还是没生效?检查这三个地方
第一步:确认当前缓存驱动路径是否被自定义修改
打开config/cache.php,查看stores['file']['path']值;如果它指向的是/tmp/my_cache而不是runtime/cache/,那么php think clear删的只是空目录,真实缓存还在别处。
第二步:检查opcache是否启用且未刷新
Linux下执行sudo systemctl restart php-fpm,或Windows下重启Apache/IIS;【仅删文件不重启PHP进程,opcache里编译后的模板和配置仍会继续执行】
第三步:验证runtime/config/是否被误删
php think clear --all会清整个runtime/,但如果config/目录下有database.php等关键配置缓存被删,框架启动时无法加载数据库配置,就会报Class not found或host为null——这不是缓存问题,是配置丢失。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











