ThinkPHP 5.1 日志路径须配置为绝对路径,推荐使用 runtime_path('log');确保目录存在且 PHP 进程有读写执行权限;多模块需独立配置 path 避免混写;type 必须为 file,禁用 unsupported 参数如 apart_level。

ThinkPHP 5.1 的日志存储路径由 config/log.php 中的 path 配置项控制,但必须注意路径类型、写入权限和运行环境一致性,否则容易出现日志写入失败或错位。
确保 path 是绝对路径
相对路径在 CLI 命令(如定时任务、队列 Worker)中极易失效。推荐统一使用绝对路径:
- 正确写法:
'path' => '/www/wwwroot/myapp/runtime/log/' - 错误写法:
'path' => '../runtime/log/'或'path' => 'runtime/log/' - 可借助框架内置函数生成:用
runtime_path('log')(返回带斜杠结尾的绝对路径),例如:'path' => runtime_path('log')
确认目录存在且具备写入权限
PHP 进程(如 Nginx + PHP-FPM 或 CLI 用户)必须对目标目录有 读、写、执行 权限:
- 创建目录:
mkdir -p /www/wwwroot/myapp/runtime/log - 赋权(以 www 用户为例):
chown -R www:www /www/wwwroot/myapp/runtime - 验证是否可写:
sudo -u www touch /www/wwwroot/myapp/runtime/log/test.log && rm /www/wwwroot/myapp/runtime/log/test.log
区分多模块/多应用时的路径配置
若项目含多个模块(如 admin、api),需避免日志混写。可在各模块配置目录下单独定义 log.php:
- 例如:
application/admin/config/log.php中设置:'path' => runtime_path('log/admin') - 对应生成目录:
runtime/log/admin/2026/10/29.log - 系统会自动按日期创建子目录,无需手动建年月日文件夹
避免与日志类型配置冲突
路径生效的前提是日志类型为 file(默认)且未误配其他参数:
- 确认
'type' => 'file'(非'socket'或'test') - 删除无效配置,如
'single' => true(会导致所有日志挤进单个文件,且可能覆盖路径逻辑) -
'apart_level'在 TP5.1 中不被支持,写了也无效,应移除
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











