真正占磁盘空间的是 runtime 目录下的缓存和日志文件,需按路径和时间精准清理;禁用 rm -rf runtime/,推荐用 php think clear 命令分类型清理,并通过定时脚本自动删除过期文件。

ThinkPHP 项目中,真正占磁盘空间的不是代码文件,而是 runtime 目录下持续生成的缓存和日志文件。不清理会导致磁盘爆满、I/O 卡顿甚至服务中断。关键不是“全删”,而是按需、分路径、按时间精准清理。
先确认哪些目录在吃空间
运行以下命令快速查看占用情况(Linux/macOS):
du -sh runtime/* | sort -hr
重点关注这几个路径:
- runtime/cache/:普通数据缓存(如 Cache::set 写入的 .php 文件)
- runtime/log/:日志文件(.log 后缀,按天滚动但默认不删除)
- runtime/html/:HTML 静态缓存(开启 html_cache_on 后生成的 .html 文件)
- runtime/request_cache/:路由级请求缓存(由 ->cache() 触发)
注意:不要直接 rm -rf runtime/——里面还有 route.php、view/ 模板编译、temp/ 配置缓存等关键文件,误删会引发 404 或 Class not found 错误。
用 php think clear 快速清理常用类型
框架自带命令最安全,适合日常维护:
- 清数据缓存:php think clear --cache
- 清模板与编译缓存:php think clear --temp(含 view/ 和 temp/)
- 清日志:php think clear --log
- 清 HTML 缓存(TP5.0+):php think clear --html(需确认 config 中启用了 html_cache_path)
- 清全部(慎用):php think clear(会清 cache、log、temp、route,但不含 html 和 request_cache)
TP6 用户注意:该命令还会同步清理 Redis 等驱动缓存;如只想清文件,加 --except=redis。
写定时脚本自动清理旧文件
仅靠手动清理不够,必须设 cron 定期执行。推荐新建自定义命令 app/command/ClearOldFiles.php:
- 清理日志:保留最近 7 天,用 filemtime() 判断,不是看文件名
- 清理 cache/:保留最近 24 小时,匹配 /\.php$/(TP File 驱动生成格式)
- 清理 html/:保留最近 48 小时,匹配 /\.html$/
- 每行清理后记录日志到 runtime/logs/clear_old.log,便于排查
然后加到系统定时任务:
0 3 * * * cd /path/to/project && php think clear-old-files >> /dev/null 2>&1
特殊场景要单独处理
某些缓存不会被常规命令覆盖,需针对性操作:
- 标签缓存(Cache::tag('user')->set(...)):用 Cache::clear('user') 精准清除,不影响其他缓存
- Redis 缓存未同步:TP6 可用 php think clear --redis;TP5.1 需手动连 Redis 执行 FLUSHDB
- 多应用模式下缓存路径动态变化:务必用 cache_path() 和 runtime_path('log') 获取真实路径,别硬编码 runtime/appname/cache/
清理后若页面异常(如 404、白屏),大概率是 route.php 或 config 缓存被误删——下次优先用 php think clear --cache --log 组合,避开敏感目录。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











