关于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 相关文章推荐
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
PHP命名空间和自动加载类
Apr 03 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
Feb 09 PHP
PHP chop()函数讲解
Feb 11 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
PHP策略模式写法
Apr 01 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 验证登陆类分享
2015/03/13 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
tensorflow多维张量计算实例
2020/02/11 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
在python3中实现更新界面
2020/02/21 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
银行员工辞职信范文
2014/01/20 职场文书
联谊会主持词
2014/03/26 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
Hive常用日期格式转换语法
2022/06/25 数据库