gpt4 book ai didi

关于laravel 日志写入失败问题汇总

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章关于laravel 日志写入失败问题汇总由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Throw问题 。

项目部署到Linux 服务器上后有时会出现 每日日志无法写入的问题。由此汇总一下常出现的问题及解决方式.

权限问题 。

导致无法写入日志的问题,是由于代码更新时添加了文件是 root 用户,所以创建日志文件也是root 权限,导致其它用户的 www 权限无法写入日志文件中.

所以修改 storage/logs/ 的用户权限为 www 。

chown www:www storage/logs -R 。

注意:如果用户使用supervisord服务运行队列的话,如果队列里有日志记录,那么运行的用户也需要改成 www 用户.

还有一种解决方式,就是修改日志的源码.

laravel在web模式下产生的日志文件(storage/logs)由www-data用户创建,而在命令行(php artisan)模式下是由当前登录系统用户创建.

这两个用户不在同一个组下,就导致后操作的功能无法对日志文件进行写操作。解决这个问题需要修改Laravel在使用Monolog框架时的源代码.

需要修改的文件在 vendor/laravel/framework/src/Illuminate/Log/Writer.php 第229行.

?
1
$handler = new RotatingFileHandler( $path , $days , $this ->parseLevel( $level ))

改为 。

?
1
$handler = new RotatingFileHandler( $path , $days , $this ->parseLevel( $level ),true,0777)

该代码在useDailyFiles函数中,因为config/app.php中对日志框架的配置是 。

?
1
'log' => 'daily' ,

所以使用的是RotatingFileHandler,构造函数中第五个参数是指定创建文件的权限.

用户问题 。

用户问题,也算是权限问题。我用这个方式解决的问题.

首先 crontab -l 查看定时任务,laravel 的定时任务定义在这里.

crontab -e 修改定时任务。一切依旧。定时任务也执行了。第二天,开始出现日志不可写的问题.

解决步骤1:修改 crontab -u www -e 定时任务配置给 www 用户,去掉root 的定时任务。第二天不再出现日志不可写问题.

结果定时任务不再执行。没遇到过这样的情况,于是同时给www 用户和 root 用户 都配置了 定时任务。结果还是日志不可写.

解决步骤2:经过一番挣扎的搜寻 ,打开了最后一次的日志.

* 号 是代表可能会有很多个 cron 开头的日志,打开最后一个即可.

?
1
vi / var /logs/cron*

如图:

关于laravel 日志写入失败问题汇总

看到定时任务的错误日志,进入home 目录,建立www文件夹。赋予权限。完成问题的解决.

以上这篇关于laravel 日志写入失败问题汇总就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/cuiliwu/article/details/82623815 。

最后此篇关于关于laravel 日志写入失败问题汇总的文章就讲到这里了,如果你想了解更多关于关于laravel 日志写入失败问题汇总的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com