关于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和MySQL保存和输出图片
Oct 09 PHP
php header()函数使用说明
Jul 10 PHP
php5新改动之短标记启用方法
Sep 11 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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实现文件安全下载
2006/10/09 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
详解http访问解析流程原理
2017/10/18 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
vue实现带复选框的树形菜单
2019/05/27 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
司机岗位职责
2013/11/15 职场文书
高职教师岗位职责
2013/12/24 职场文书
《阳光》教学反思
2014/02/23 职场文书
寒假安全保证书
2015/02/28 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
python实现手机推送 代码也就10行左右
2022/04/12 Python