laravel日志无访问权限Permission denied

2023-09-05 15:24:55

laravel项目时不时的报错,日志没有权限写入之类的报错。很是头疼,最后集中时间解决了这个问题。是linux系统机制导致的。我有一个laravel的定时任务,laravel的定时任务是基于linux crontab的,这个定时任务会生成日志,这个日志和laravel的错误日志共用一个文件,如果是crontab先用laravel本身的程序产生日志的话,这个日志是root权限的,而我的laravel产生的日志是apache用户产生的,这样apache就没有权限写入root创建的日志。反过来就没有问题。
我chmod -R 777 laravel-2023-09-05.log 这个文件的时候,也能解决问题。但是这个log文件是每天都会生成的,如果这样做,得搞个定时器来专门修改权限,我觉得不够好。

我的解决方式。直接看最后


搜索网络有三种方案。

    1. 给crontab指定用户运行    crontab -u apache -e  (我觉得有点不妥,万一其他用户也在用crontab,引起不必要的错误)

    2.    Laravel 5.6.10 之后的版本支持对日志文件的权限配置,添加 config/logging.php 文件中的 permission 字段配置:

    

'daily' => [

        'driver' => 'daily',

        'path' => storage_path('logs/laravel.log'),

        'level' => 'debug',

        'days' => 7,

        'permission' => '0664',

    ],


(我的版本是laravel5.5 ,虽然很古老了,但是我不想更换,因为我没有非要更换的理由)

    3.修改vendor代码中创建日志文件的代码,也很简单,就加一个参数。(我认为更不妥呀,这东西改了并不是永久的呀,下次重新部署就没了,就不在这里过多介绍了)


我的解决方式:我直接修改了php-fpm启动的用户,php-fpm以root身份运行。问题就解决了,不管事php-fpm和crontab谁先创建了日志,都是root用户创建的。这样就没有谁没有权限的问题了。 大工高级,完美并且永久的解决了这个问题。


php-fpm以root身份运行,可参考地址  php-fpm以root身份运行

  • 2021-01-18 13:50:21

    vue实现粘贴功能

    paste事件就是粘贴事件 需要通过clipboardData获得粘贴的内容

  • 2021-01-18 15:12:57

    flex和inline-flex区别

    flex: 将对象作为弹性伸缩盒显示 inline-flex:将对象作为内联块级弹性伸缩盒显示

  • 2021-01-21 13:52:36

    node.js使用Nodemailer发送邮件

    常常看到一些网站有邮箱获取验证码验证注册或者修改密码等,今天也来了解一下在nodejs + express怎么发送电子邮件。使用模块Nodemailer。这里以qq邮箱举例子。

  • 2021-01-21 13:55:53

    Mongodb字段更新$unset操作符

    当使用$操作符匹配任何数组元素,$unset替换指定的元素为null而不是删除掉指定的元素,此行为保持数组大小和位置一直;