ThinkPHP日志默认存于runtime/log/目录,TP6/8按年月日分层(如2026-10/21.log),TP5多用think.log或兼容日期格式;实际路径取决于log.php中type为file且single=>false;需检查权限、level级别、realtime_write配置以确认写入是否正常。

ThinkPHP 日志文件默认存放在项目根目录下的 runtime/log/ 目录中。
具体路径结构因版本略有差异:
ThinkPHP 6 / 8:按年月日分层,例如
runtime/log/2026-10/21.log(当前时间是2026年10月21日,所以最新日志大概率在此)-
ThinkPHP 5:早期多用单文件,如
runtime/log/error.log或runtime/log/think.log,但新版 TP5 也逐步兼容日期目录格式立即学习“PHP免费学习笔记(深入)”;
注意:实际路径是否按日期生成,取决于日志驱动配置。若 config/log.php 中 type 是 file 且未强制 single => true,就会走日期目录;否则可能回落到单文件(如 think.log)。
怎么确认日志真正在写入?
目录空或日志停更,不一定是没报错,而是卡在写入环节:
- 权限问题:`runtime/` 及其子目录必须对 Web 进程用户(如 `www-data`、`nginx`、`apache`)可写,否则静默丢弃
- 级别设置过严:检查 `config/log.php` 中的 `level` 配置,若只设 `['error']`,warning/debug 就不会落盘
- 实时写入关闭:确认 `realtime_write => true`,否则日志可能缓存数秒才刷盘,调试时易误判“没日志”
快速定位当天日志文件的命令
Linux 下推荐用动态路径避免手输错误:
tail -f runtime/log/$(date +%Y-%m)/$(date +%d).log
如果提示“No such file or directory”,先运行 ls -l runtime/log 看是否存在,再用 stat runtime/log 检查属主和权限。
其他查看方式
- 用 ThinkPHP 自带命令:
php think log(列出并读取日志内容) - 直接打开文件:
cat runtime/log/2026-10/21.log或vim runtime/log/think.log - 图形界面:用文件管理器进入项目 → runtime → log,双击打开
生产环境特别提醒
务必禁止 Web 直接访问 `runtime/` 目录。Nginx/Apache 配置中应屏蔽该路径,防止敏感日志被外部读取。比如 Nginx 中加:
location ^~ /runtime/ { deny all; }



















