Laravel每日日志创建权限错误

阅读 (344)
Laravel daily形式的日志每天创建的新日志拥有者总是错误

我有一个使用php artisan(root用户)运行的脚本,有时它会导致在Nginx www用户执行操作之前创建每日日志文件-这意味着当真实用户使用我的Web应用程序时, 文件夹权限错误:

Failed to open stream: Permission denied

我每次都手动将权限更改回www拥有者,但是我想使用正确的权限创建日志文件来解决此问题。

我考虑过创建一个crontab定时任务来修改目录权限来确保它每天都有正确的权限,但是我觉得除了脚本应该有更好的解决方案。

Laravel 5.6.10及更高版本在singledaily驱动程序的配置(config/logging.php)中支持permission元素:

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

但这并没有解决目录拥有者的问题,第二天创建的日志拥有者依然是root用户

后来在网上又找到另一个解决方案

config/logging.php中,使用php_sapi_name()来创建每天日志的路径值。

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

这将为不同的php_sapi_name创建单独的目录,并将带有时间戳的日志文件放入其垂直目录。

  • 日志文件在fpm-fcgi目录下创建:来自网站www:www的日志
  • 日志文件在cli目录下创建:从artisan命令(cronjob)。所有者是root:root
更新于:2023-02-22 10:40:33
返回顶部