ThinkPHP6.1需借助命令行脚本与系统调度实现日志自动清理:使用php think clear --log精准清空日志;推荐宝塔计划任务或Linux cron定时执行;亦可配置内置Rotate驱动实现按天分割与保留策略。

ThinkPHP6.1 本身不内置定时日志清理功能,但可通过组合框架能力与系统级工具实现稳定、可控的日志自动清理。核心思路是:用命令行脚本触发清理逻辑 + 外部调度机制(如 Linux cron 或宝塔计划任务)定期执行。
使用 php think clear 命令配合参数精准清理
TP6.1 提供了内置命令,可直接清空 runtime/log/ 目录下的日志文件:
-
基础清理:执行
php think clear --log,仅清空日志目录,不影响缓存、路由等其他运行时数据 -
带保留策略的清理:若需保留最近 N 天日志,需自行扩展——在命令中调用
Log::getWriter()->getPath()获取日志路径,再用 PHP 的scandir()+filemtime()筛选并删除超期文件 -
避免误删:不要用
php think clear --all定时执行,它会连带清掉路由、模板等关键缓存,可能导致首次访问变慢或 404
通过宝塔面板添加计划任务(推荐给运维友好型项目)
在宝塔「计划任务」中新建 Shell 脚本任务,比手动写 cron 更直观安全:
- 任务类型选「Shell 脚本」,执行周期按需设(如每天凌晨 2 点)
- 脚本内容示例(注意替换为你的实际路径):
cd /www/wwwroot/your-site.com && /www/server/php/82/bin/php think clear --log - 勾选「记录脚本输出」便于排查是否执行成功;日志会保存在宝塔任务列表里,不用额外建日志文件
用 Linux cron 手动配置(适合有服务器权限的开发者)
适合需要精细控制或跨多站点统一管理的场景:
- 编辑 crontab:
crontab -e - 添加一行(每天 3 点清理):
0 3 * * * cd /www/wwwroot/your-site.com && /www/server/php/82/bin/php think clear --log > /dev/null 2>&1 - 确保 PHP CLI 路径正确(可在宝塔 PHP 设置页复制「PHP版本路径」),且该 PHP 已启用 OpenSSL、PDO 等 TP6 所需扩展
自定义日志驱动实现自动轮转(进阶可控方案)
若需按大小切割、压缩归档或对接远程存储,可替换默认日志驱动:
- 在
config/log.php中将default改为'rotate',并配置'max_files' => 30等参数,TP6 内置的 Rotate 日志驱动会自动按天分割、保留指定天数 - 如需更灵活控制(例如只保留错误日志、压缩旧文件),可继承
think\log\driver\File,重写createDir()和save()方法,在写入前判断并清理 - 注意:自定义驱动需在
app/provider.php中绑定,且确保不破坏原有日志上下文(如请求 ID、用户信息)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











