Laravel 日志文件写入失败
条评论我们知道 Laravel 中日志系统的 daily 驱动是新创建一个文件,且是以日期来命名文件的。所以第一次创建日志的用户就显得尤为重要,如果文件创建的 Onwer和 Group 不对,其他的用户触发写入日志文件就会失败。
在 Laravel 中有多少种不同的用户可能创建日志文件:
Crontab中执行的定时任务,跟创建Crontab的用户有关,此时创建的日志文件Owner和Group值分别是该用户以及默认的Group。- 一些常驻的后台进程,比如
Laravel中的queue work,此时创建的日志文件Owner和Group值分别是执行该进程的用户以及所属的默认Group。 - 正常用户访问网站产生的日志文件,此时创建的日志文件的
Owner和Group都是 web 服务器默认的用户。
解决方法:
指定
www用户执行crontabsudo crontab -u www -eLaravel中修改创建日志文件的权限:修改
config/logging.php文件:1
2
3
4
5
6
7'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
'permission' => 0664 // 此处是添加的文件权限
],