ThinkPHP 5.0 清缓存需区分类型与路径:cache/(数据缓存)、temp/(模板编译)、log/(日志)可安全清理;session/、trace/非核心缓存;view/、route.php在TP5中不存在。推荐用Cache::clear('file')清cache、Cache::clear('temp')清temp,或php think clear --temp(TP5.1+),避免误删.gitignore等关键文件。

ThinkPHP 5.0 清空缓存不能只靠删文件夹,关键是要分清“缓存类型”和“对应路径”,否则容易误删配置、日志甚至 .gitignore 等重要文件。
明确哪些目录属于缓存,哪些不是
TP5.0 的 runtime/ 下有多个子目录,但只有部分是缓存类内容:
- cache/:数据缓存(如 Cache::set 写入的内容),可安全清空
- temp/:模板编译缓存(.php 文件),修改模板后需清理
- log/:运行日志,非缓存但常被一并清理;清空后会重建空目录
- session/、trace/:会话与调试追踪,一般不参与业务缓存逻辑
- view/、route.php 不在 TP5.0 默认缓存范围内:TP5 没有内置 view 缓存目录,也不生成 route.php;这些属于 TP6+ 特性,TP5 中不存在,误删无意义
推荐的清理方式(按场景选)
优先用框架方法,避免手动 rm -rf runtime/ 这类高危操作:
- 清数据缓存(cache/):
\think\Cache::clear('file')或\think\facade\Cache::clear('cache') - 清模板编译缓存(temp/):
\think\facade\Cache::clear('temp'),或删runtime/temp/下所有 .php 文件 - 清日志(log/):删
runtime/log/全部内容,再执行rmdir()清空空子目录(注意保留 log/ 根目录) - 命令行一键(开发环境):
php think clear—— 它默认只清 cache/、log/、session/、trace/,不含 temp/;如需清 temp,得额外加--temp参数(TP5.1+ 支持)
代码中安全清理的写法示例
在控制器里提供“清除缓存”按钮时,建议逐项清理,不碰 runtime/ 根目录:
立即学习“PHP免费学习笔记(深入)”;
- 不直接删
runtime/,而是拼出子路径:env('RUNTIME_PATH') . 'cache/' - 删 temp 编译文件:
array_map('unlink', glob(env('RUNTIME_PATH') . 'temp/*.php')); - 清 log 目录:
$logs = glob(env('RUNTIME_PATH') . 'log/*'); foreach ($logs as $dir) { array_map('unlink', glob($dir . '/*.log')); rmdir($dir); } - 始终避开
runtime/根目录下的 .gitignore、.htaccess 或自定义配置文件
特别注意权限与环境差异
Linux 下用命令行清理失败,大概率是权限问题:
- Nginx 常以 www-data 用户运行,而你用 root 或普通用户执行 php think clear,会导致“Permission denied”
- 解决办法:统一用户执行,例如
sudo -u www-data php think clear --temp - 或临时改权限:
chmod -R 775 runtime/+chgrp -R www-data runtime/,再加chmod g+s runtime/确保新建文件继承组



















