Laravel 存储/日志 - 哪些是正确的权限和用户/组?

问题描述

假设我的 storage/logs 目录目前是空的。 我从邮递员那里发出请求,但出现错误。 因此,Laravel 尝试将其记录到 storage/logs 目录中。 由于它是空的,它会创建一个文件

在这里 - 请注意所有者/权限:

-rw-r--r-- 1 www-data www-data 9955 Dec 29 10:29 laravel-2020-12-29.log

我在 this answer 中读到用户应该是我(让我们称我的用户myuser)并且我和组都应该具有读写权限。 (而且我认为这是正确的 - myuser 应该是所有者,例如,如果我想运行一个 artisan cmd 或 sth)

所以,我运行以下两个命令:

sudo chown -R $USER:www-data app/storage
sudo chmod -R ug+w app/storage

那么文件的权限就变成了:

-rw-rw-r-- 1 myuser www-data 9955 Dec 29 10:29 laravel-2020-12-29.log

现在,如果我再次尝试执行 Postman 的请求,它仍然有效。

但是如果我在第二天尝试(或者如果我删除文件并再次尝试),新文件将再次使用初始权限创建:

-rw-r--r-- 1 www-data www-data 9955 Dec 29 10:32 laravel-2020-12-29.log

为什么会这样? 应该怎么做才能将权限设置为正确的?

解决方法

您可以通过更改 Laravel 项目的配置来解决此问题
转到此路径 config/logging.php 并找到以 daily 为键的行并像这样更改它,例如:

'daily' => [
    ...
    'permission' => 0664,],

此后生成的日志文件具有此权限