关于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初学入门
Nov 19 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
PHP 代码规范小结
Mar 08 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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 程序授权验证开发思路
2009/07/09 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
CentOS安装php v8js教程
2015/02/26 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
jquery中ajax学习笔记一
2011/10/16 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
《蜗牛》教学反思
2014/02/18 职场文书
护校行动方案
2014/05/31 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js