Laravel 日志文件权限问题

Laravel框架
478
0
0
2022-04-14

Laravel 日志通道设置为 singledaily 时,会将日志写入到文件,但是 命令行和 FPM 这两个模式运行的用户可能不是同一个(通常是 root 和 www),外加文件的默认权限是 0644,也就是 rw-r--r--,所以文件创建后,其它用户是没权限写入的,这可能会导致程序在需要写入日志而出现对文件没有操作权限时,发生严重错误而崩溃。

解决此问题的方法,一是让命令行和 FPM 运行在同一个用户下,二是修改文件权限。

方法一对于我们普通开发者而言,有点麻烦,而方法二就相当简单,只需要修改文件的默认权限即可,并且 Laravel 也给与了方便的设置项 permission,具体如下:

'daily' => [
  'driver' => 'daily',
  'path' => storage_path('logs/laravel.log'),
  'level' => 'debug',
  'days' => 7,
  'permission' => 0664,
],

0664,即 rw-rw-r--,允许同组其它用户也可以写入。

如果 0664 还不够,就再加到 0666,允许其它用户也可写入。

另外,在这之前,应该保证 storage 文件夹的权限已经按照 Laravel 的提示进行设置。

Laravel daily log created with wrong permissions - Stack Overflow
How to configure PHP CLI on linux ubuntu to run as www-data? - Server Fault