关于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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
PHP 选项及相关信息函数库
Dec 04 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
PHP5.4起内置web服务器使用方法
Aug 09 PHP
详解php中 === 的使用
Oct 24 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 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+mysql保存和输出文件
2006/10/09 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
爱国主义演讲稿
2014/05/07 职场文书
储备店长岗位职责
2015/04/14 职场文书
师德承诺书2015
2015/04/28 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server