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身份运行

  • 2020-04-02 17:02:25

    vue怎么能像jquery那样获得数据

    有时候我们需要获得动态的元素,但是我们没法直接用vue语法,vue一共了当前组件的对象,我们可以避免使用document.get...之类的。

  • 2020-04-02 21:38:15

    Nginx向ExpressJS转发真实IP地址

    由于服务器配置了Nginx的反向代理,在ExpressJS中无法获取到真实的IP地址。本文就介绍了如何配置Nginx以及ExpressJS使其可以显示用户的真实地址。

  • 2020-04-03 08:53:06

    使用自己的QQ邮箱发送自动发送邮件

    话说网上发送邮件的代码很多,但是我由于不细心,导致拿别人的代码发送邮件老是失败,今天就说说几个要注意的地方吧!!!

  • 2020-04-03 10:20:20

    Vue 项目性能优化

    Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM;但 Vue 项目中仍然存在项目首屏优化、Webpack 编译配置优化等问题,所以我们仍然需要去关注 Vue 项目性能方面的优化,使项目具有更高效的性能、更好的用户体验。本文是作者通过实际项目的优化实践进行总结而来,希望读者读完本文,有一定的启发思考,从而对自己的项目进行优化起到帮助。本文内容分为以下三部分组成:

  • 2020-04-03 13:07:46

    flex布局与position:absolute/fixed的冲突问题

    导航栏内,平均分为四块,为了适配各种移动设备,使用了flex布局。 与此同时,产品经理要求:页面上滚越过封面图时,导航栏变为固定定位,浮在页面顶部。 拿到需求之后,思路就是先搞好布局,然后监听window.onscroll,当页面滚的距离大于封面图的时候,给ul加入position:fixed。

  • 2020-04-03 16:56:59

    Inkscape教程

    本教程演示了Inkscape基础使用。这是常规Inkscape文档,你可以预览、编辑、复制、保存。 本教程包括画布导航、管理文档、形状工具基础、选择技术、使用选择转换对象、分组、设置填充和画笔、对齐和Z顺序。有关更高级的主题请查看帮助菜单中的其它教程。

  • 2020-04-03 17:04:35

    Inkscape/SVG附中文教程PDF

    Inkscape中的终极工具是XML编辑器(Shift+Ctrl+X),可以实时显示整个文档的XML树形图。修改绘图时,你可以注意一下XML树形图中的变化。也可以在XML编辑器中修改文本、元素或者节点属性,然后在画图上查看效果。这是一个非常形象化的学习SVG格式的交互式工具。并且可以实现一些通常的编辑工具无法完成的功能。

  • 2020-04-03 19:09:31

    CryptoJS.enc.UTF8 中文乱码

    ret = CryptoJS.AES.encrypt(data,'secret key 123') content = ret.toString() result = CryptoJS.AES.decrypt(content,'secret key 123') print(result.toString(CryptoJS.enc.Utf8))

  • 2020-04-03 19:10:56

    nodejs与javascript中的aes加密

    aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。高级加密标准已然成为对称密钥加密中最流行的算法之一。