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


Posted in PHP onOctober 17, 2019

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行。

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

改为

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

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

'log' => 'daily',

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

用户问题

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

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

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

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

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

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

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

vi /var/logs/cron*

如图:

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

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

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

PHP 相关文章推荐
第三节 定义一个类 [3]
Oct 09 PHP
我的论坛源代码(一)
Oct 09 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
PHP自动识别当前使用移动终端
May 21 PHP
tp5.1框架数据库子查询操作实例分析
May 26 PHP
PHP基于进程控制函数实现多线程
Dec 09 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 #PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 #PHP
Laravel 5.5 异常处理 & 错误日志的解决
Oct 17 #PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 #PHP
使用laravel指定日志文件记录任意日志
Oct 17 #PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 #PHP
thinkPHP事务操作简单案例分析
Oct 17 #PHP
You might like
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
简析Python的闭包和装饰器
2016/02/26 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
详解python内置模块urllib
2020/09/09 Python
请说出你所知道的线程同步的方法
2013/04/19 面试题
会计专业推荐信
2013/10/29 职场文书
商务英语专业毕业生自荐信
2013/11/05 职场文书
商务英语毕业生自荐信范文
2013/11/08 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
诚实守信演讲稿
2014/09/01 职场文书
采购员岗位职责范本
2015/04/07 职场文书
2015年女工委工作总结
2015/07/27 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技