遗忘悠剑

🍀 记录精彩的程序人生 开始使用

Laravel 在 linux 系统下运行遭遇的日志的权限的问题 (包括最近发布的 discuzQ 系统)

laravel 在 Web 访问模式下若报错产生的日志文件(storage/logs)由 www-data 或者 www 用户创建,而在命令行(php artisan)模式下是由当前登录系统用户(例如 root 或者其他小权限用户)创建,laravel 使用的 Monolog 扩展创建日志文件时,不会给予其他用户改写权限。

这两个用户不在同一个组下,就导致后操作的功能无法对日志文件进行写操作。解决这个问题需要修改 Laravel 在使用 Monolog 框架时的源代码。

需要修改的文件在

  • vendor/laravel/framework/src/Illuminate/Log/Writer.php
    这个文件的第 229 行,如下:
$handler = new RotatingFileHandler($path, $days, $this->parseLevel($level))

改为

$handler = new RotatingFileHandler($path, $days, $this->parseLevel($level),true,0777)

该代码在 useDailyFiles 函数中,因为 config/app.php 中对日志框架的配置是

 'log' => 'daily'

所以使用的是 RotatingFileHandler,构造函数中第五个参数是指定创建文件的权限。

当然或许还有更好的解决方案,欢迎大家一起讨论~


🐶 你走,我不送你。你来,风雨无阻,我去接你。

评论
留下你的脚步