关于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 相关文章推荐
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
PHP面试题之文件目录操作
Oct 15 PHP
WordPress中对访客评论功能的一些优化方法
Nov 24 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
php支付宝在线支付接口开发教程
Sep 19 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
Laravel 框架返回状态拦截代码
Oct 18 PHP
TP5框架安全机制实例分析
Apr 05 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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
第一节--面向对象编程
2006/11/16 PHP
PHP开发框架总结收藏
2008/04/24 PHP
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
2016/07/22 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
js判断密码强度的方法
2020/03/18 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
Django中多种重定向方法使用详解
2019/07/17 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python__name__原理及用法详解
2019/11/02 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
捐书寄语赠言
2014/01/18 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
战略合作协议书范本
2014/04/18 职场文书
学校教代会开幕词
2016/03/04 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL