laravel monolog 日志权限问题

来源:互联网 发布:新东方多媒体数据库 编辑:程序博客网 时间:2024/06/05 07:15

今天系统出现了一个问题:

使用了console任务计划,monolog生成的日志文件,权限是:root,而它执行的可能是凌晨,导致之后www用户写入同一个文件,权限不足!

查看了下monolog源码,以及一些资料,在 'RotatingFileHandler' 中,可以修改文件权限:

new RotatingFileHandler($path, $days, $this->parseLevel($level), 777)// 默认是644

然而laravel自己本身,使用的是:

Illuminate\Log\Writer里的useDailyFiles()方法,并不能修改权限,除非修改底层源码!

网上查看资料,有人提出了同样的问题,太良心回答了!!分享下:

https://stackoverflow.com/questions/27674597/laravel-daily-log-created-with-wrong-permissions

简单写下解决方法

1.使用了2个PHP的内置函数:

php_sapi_name()  // 区分的是 cli 还是 apache,nginx等

get_current_user() // 区分的是脚本执行的用户,可能是root、www

然后会各自生成各自的文件

这种方式就是不能生成一个文件

2.直接在服务器上,提前给日志目录,设置 ACL 权限:

setfacl -R -d -m user:www:rwx  laravel/storage/logs/

setfacl -R -d -m group:www:rwx  laravel/storage/logs/

原创粉丝点击