ThinkPHP 5.1 日志路径由 config/log.php 的 path 参数控制,默认为 runtime/logs/,支持相对路径(如 '../runtime/logs/')、绝对路径(如 '/var/log/tp51-app/')和动态路径(如 Env::get('log_path', runtime_path('logs'))),多模块可单独配置,需确保目录存在且 PHP 有写权限。

ThinkPHP 5.1 的日志保存路径由 config/log.php 配置文件控制,核心是设置 path 参数。默认情况下,日志写入到 runtime/logs/ 目录,但你可以按需修改为绝对路径或相对路径。
直接修改 log.php 中的 path 配置
打开 config/log.php(若不存在可复制 thinkphp/tpl/log.php 创建),在日志驱动配置中指定 path:
- 使用相对路径(推荐):指向项目内可写目录,例如:
'path' => '../runtime/logs/',
注意末尾斜杠不能省略 - 使用绝对路径(适合多应用或统一日志管理):
'path' => '/var/log/tp51-app/',
需确保 PHP 进程有该目录的写权限 - 动态路径(如按环境区分):
'path' => Env::get('log_path', runtime_path('logs')),
按模块或环境单独配置路径
若项目含多个模块(如 admin、api),可在对应模块的配置目录下新建 config/log.php,内容仅覆盖关键项:
-
application/admin/config/log.php内容示例:return ['path' => '../runtime/logs/admin/']; - 系统初始化时会优先读取模块级配置,实现路径隔离
注意事项与常见问题
路径配置生效需满足以下条件:
- 目标目录必须存在且 PHP 进程具有 写权限(Linux 常见问题:
chown -R www-data:www-data /var/log/tp51-app) - 路径中不要包含未定义的变量或运行时不可达的符号链接
- 若启用
apart_level(如错误日志单独存放),子目录会自动创建,但父路径仍需手动准备 - Windows 下路径分隔符建议统一用正斜杠
/,避免转义问题
验证是否生效
配置后执行一次日志写入,检查实际生成位置:
- 在控制器中调用:
Log::info('路径测试'); - 查看
runtime/logs/或你配置的路径下是否生成了202610/子目录及info.log文件 - 若无日志,检查
error_log或 PHP 错误报告,确认是否因权限或路径不存在导致写入失败
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











