关于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 相关文章推荐
一个用于网络的工具函数库
Oct 09 PHP
PHP获取当前文件所在目录 getcwd()函数
May 13 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
Aug 06 PHP
学习php分页代码实例
Oct 24 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
实例讲解yii2.0在php命令行中运行的步骤
Dec 01 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 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/30 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
PHP生成随机密码类分享
2014/06/25 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
详解如何较好的使用js
2016/12/16 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python实现LRU热点缓存及原理
2019/10/29 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
总经理助理职责
2014/02/04 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python
Python实现为PDF去除水印的示例代码
2022/04/03 Python