| 用过Laravel的小伙伴一开始安装完框架后可能都遇到过daily 日志文件写入失败的问题,接下来我们就来详细说下日志文件写入失败的原因以及对应的解决方案。 |
在讲这个问题之前可能需要简单介绍下 Linux系统下的文件的Ownership和Permission。
User是文件的所有者,默认情况下,用户创建了一个文件,该文件的所有者就是该用户。
一个用户组能包含多个用户,所有属于这个组的用户都有相同的权限来访问文件。假设你有一个项目,很多用户都需要访问这个项目文件的权限,你不需要手动赋予这些用户所有权限,你只需要把这些用户加到一个组里面,赋予这些组有访问文件的权限,这样一来就仅仅只有组里面的成员能对文件进行读写操作。
任何其他的用户都能访问文件,因此,给Other用户赋予权限,相当于所有用户都拥有这个权限。
在 UNIX/ Linux 系统中每一个文件和目录都有3中权限,以下就是对三个所有者的讨论。
linux下文件信息的显示截图
linux下目录的信息显示截图
以上的截图显示了一个文件和文件夹的信息,我们可以看到:
我们知道很多应用系统中的日志是写文件的,且是以日期来命名文件的。所以第一次创建日志的用户就显得尤为重要,如果文件创建的 Onwer和 Group 不对,其他的用户触发写入日志文件就会失败。
接下来我们讨论下有多少种不同的用户可能创建日志文件:
由以上的分析,我们大概已经找到了解决问题的方法。
下面就说下我的具体解决方案:
指定www-data用户执行crontab:
sudo crontab -u www-data -e
Laravel中修改创建日志文件的权限:
编辑 confog/logging.php 文件
添加 'permission' => 0664
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
'permission' => 0664,
],
原文链接: https://www.linuxprobe.com/laravel-permission-denied.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31559985/viewspace-2655908/ ,如需转载,请注明出处,否则将追究法律责任。