Linux下清理ThinkPHP缓存需“删得准”:优先用php think clear:cache(清cache/data)、--all(清runtime全部子目录但保留结构)、clear:template(清view)、route:clear(清路由);Redis须按prefix精准删除,禁用FLUSHDB;手动删文件时不得删除runtime目录本身,且须注意权限与用户身份一致。

Linux 下清理 ThinkPHP 缓存,关键不是“删得快”,而是“删得准”——既要清掉旧缓存避免模板不更新、路由 404、配置失效,又不能误删 runtime 下的结构目录或正在写入的日志句柄。
优先用内置命令:安全又省心
进入项目根目录后,直接运行:
- php think clear:cache:只清 runtime/cache/ 和 runtime/data/(含 config.php、route.php),适合日常调试;
- php think clear --all:清空整个 runtime/ 下所有子目录内容(cache/、log/、temp/、view/、route/、data/ 等),但保留目录本身和 .gitignore 等保护文件;
- php think clear:template(TP6.1+):专清 runtime/view/ 下编译后的模板文件,改了 HTML 却不生效时必用;
- php think route:clear:单独清除路由缓存,新增或修改路由后 404 就该跑这行。
Redis 缓存必须按前缀清理
file 驱动只影响本地文件,而 Redis 缓存存在服务端,php think clear --all 不会自动清 Redis 里的 session 或队列 key。若共用一个 Redis 实例,务必按前缀操作:
- 先确认 config/cache.php 中 redis 的 prefix 配置,比如 'prefix' => 'prod_cache:';
- 再执行精准删除:redis-cli -n 0 --scan --pattern "prod_cache:*" | xargs redis-cli -n 0 del;
- 切勿直接用 FLUSHDB 或 FLUSHALL,否则可能连 session:xxx、queue:job 都被清空。
手动删文件时守住三条线
命令失效或需紧急处理时,可手动操作,但必须遵守:
- 不删 runtime/ 目录本身,只清其下子目录内容(如 rm -f runtime/cache/* runtime/temp/*.php runtime/view/*);
- 保留 runtime/log/ 目录结构,删空内容可以,删掉目录会导致后续日志写入失败;
- 别碰 runtime/route.php 和 runtime/data/config.php 以外的 data/ 文件,比如 route.php 是路由缓存,config.php 是配置缓存,删了它们才真正影响访问逻辑。
权限问题常被忽略
报 Permission denied?大概率是 PHP 进程用户(如 www-data)和你当前终端用户不一致:
- 用 sudo -u www-data php think clear:cache 模拟 Web 服务身份执行;
- 或临时修正 runtime/ 目录权限:sudo chown -R $USER:www-data runtime/ && sudo chmod -R g+w runtime/;
- 生产环境建议统一由部署脚本或 CI/CD 流程触发清理,避免人工混用用户身份。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











