今天系统出现了一个问题:
查看了下monolog源码,以及一些资料,在 'RotatingFileHandler' 中,可以修改文件权限:使用了console任务计划,monolog生成的日志文件,权限是:root,而它执行的可能是凌晨,导致之后www用户写入同一个文件,权限不足!
然而laravel自己本身,使用的是:new RotatingFileHandler($path, $days, $this->parseLevel($level), 777)// 默认是644
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/