Laravel 日志文件权限问题

lew*_*s4u 5 user-permissions laravel

如果在运行php artisan命令时出现错误,日志文件将像这样创建:

 -rw-rw-r-- 1 user www-data 2,2K Jul 28 18:08 laravel-2019-07-28.log
Run Code Online (Sandbox Code Playgroud)

如果通过网络浏览器使用应用程序时出现错误,日志文件将如下创建:

-rw-r--r-- 1 www-data www-data 2,2K Jul 28 16:10 laravel-2019-07-28.log
Run Code Online (Sandbox Code Playgroud)

www-data创建原始文件后,如果php artisancommand有错误,会报错,Permission denied因为无法写入日志

有没有办法为新创建的文件设置默认 chmod,以便它们始终rw用于组或者你们有其他一些解决方案

要重现此问题:

  1. 删除所有 storage/logs/*.log 文件
  2. 调用一些不存在的 php artisan 命令,例如:php artisan make:xy-> 这将产生错误并创建一个 .log 文件
  3. 在浏览器中调用路由 /logout -> 这将尝试写入同一个日志文件,并将抛出一个错误,表明它无法写入日志“权限被拒绝”

kre*_*gus 7

为此苦苦挣扎了很长时间,并想知道与 OP 相同的事情,后者问:

有没有办法为新创建的文件设置默认 chmod,以便它们始终具有组的 rw

答案是肯定的

config/logging.php我添加permission => 0666,我在Laravel 文档中找到的,所以我的日常日志的配置现在看起来像这样:

'daily' => [
   'driver' => 'daily',
   'path' => storage_path('logs/laravel.log'),
   'level' => 'debug',
   'days' => 14,
   'permission' => 0666,
],
Run Code Online (Sandbox Code Playgroud)

需要明确的是,0664将组权限设置为 已经足够了rw,但这仍然会导致权限错误。

0666已经为我解决了权限冲突。希望这可以帮助某人!

  • 谢谢,这在 laravel 5.8 上有效(我添加了 'permission' => 0775 ) (2认同)