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-01-13 21:56:45

    Ant Design Pro nginx配置

    Ant Design Pro nginx配置 今天看了下Ant和nginx的配置 给大家分享下 下边的配置可以直接使用 修改为自己的域名和文件夹目录就可以

  • 2020-01-13 23:36:35

    webpack之externals详解(精华)

    官网文档解释的很清楚,就是webpack可以不处理应用的某些依赖库,使用externals配置后,依旧可以在代码中通过CMD、AMD或者window/global全局的方式访问。

  • 2020-01-14 00:12:22

    webpack externals详解

    在众多的webpack配置教程中,对externals这个配置选项,总是一带而过,把文档中提到的几种方式都复述一遍,但是对于开发者而言,根本没法完全理解。本文试图通过一整篇文章,详细的对externals这个参数进行讲解。

  • 2020-01-14 01:06:37

    webpack externals 深入理解

    按照官方文档的解释,如果我们想引用一个库,但是又不想让webpack打包,并且又不影响我们在程序中以CMD、AMD或者window/global全局等方式进行使用,那就可以通过配置externals。这个功能主要是用在创建一个库的时候用的,但是也可以在我们项目开发中充分使用。

  • 2020-01-14 01:08:19

    webpack用externals优化echarts

    防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖(external dependencies)。