应先确认缓存驱动类型,file驱动下用安全php脚本按7天删日志、24小时删缓存,并校验文件可写性;模板与路由缓存需专用命令清理;生产环境禁用并发删除、shell命令及无锁定时清理。

ThinkPHP项目上线后缓存文件越积越多,手动删runtime/cache/容易漏删或误删.gitignore、route.php等关键文件,用php think clear --all又会连日志一起清掉,调试时找不到报错痕迹。
先确认缓存驱动类型再动手
打开config/cache.php,看default值是file、redis还是其他;如果是redis,跳过所有文件操作,直接走Redis命令清理;如果是file,继续下一步。
执行php think cache:info查看当前生效的缓存配置,【不看配置就删runtime/cache/,大概率只清了部分缓存】。
安全删除过期文件的PHP脚本
在app/command/ClearOldFiles.php中写入以下逻辑:
第一步:获取日志和缓存路径,用think\facade\Env::get('runtime_path')拼接,避免相对路径失效。
第二步:遍历log/目录,对每个.log文件调用filemtime(),只删修改时间早于7天的文件,跳过当天日志(如2026-07-30.log)。
第三步:遍历cache/目录,同样用filemtime()判断,但过期阈值设为24小时——因为缓存更新更频繁,且File驱动不主动清理磁盘文件。
第四步:每删一个文件前,先用is_file($file) && is_writable($file)双重校验,避免unlink()触发警告或静默失败。
命令行一键清理模板与路由缓存
方法一:清模板缓存(仅TP6.1+支持)
执行php think clear:template,它会精准定位config/template.php里cache_path配置的路径,不会误删view/以外的文件。
方法二:清路由缓存
TP6执行php think route:clear,TP5直接删runtime/route.php——【别用rm -f runtime/route.php,权限不对时会删失败却无提示】。
生产环境禁用的三种操作
禁止在HTTP请求中调用Dir::delete(runtime_path),并发写入可能损坏缓存索引。
禁止用exec('find runtime/cache -type f -mtime +1 -delete'),路径含空格或符号链接时会中断。
禁止在定时任务里不加锁就跑清理脚本,cron若每分钟触发一次,上一轮还没删完下一轮已启动。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











