关于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 相关文章推荐
php 用sock技术发送邮件的函数
Jul 21 PHP
php Smarty模板生成html文档的方法
Apr 12 PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
Aug 09 PHP
php打造属于自己的MVC框架
Mar 07 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
php简单生成随机数的方法
Jul 30 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
php 基础函数
Feb 10 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
购物车实现的几种方式优缺点对比
May 02 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
JQuery循环滚动图片代码
2011/12/08 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
儿童编程python入门
2018/05/08 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
试用期员工考核制度
2014/01/22 职场文书
2014村务公开实施方案
2014/02/25 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
总经理岗位职责范本
2015/04/01 职场文书
敬老院活动感想
2015/08/07 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
thinkphp 获取控制器及控制器方法
2021/04/16 PHP