问题描述
假设我的 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,],
此后生成的日志文件具有此权限