关于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 session常见问题集锦及解决办法总结
Mar 18 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
PHP简单选择排序算法实例
Jan 26 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
yii框架使用分页的方法分析
Jul 25 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 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实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
JSON格式化输出
2014/11/10 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
讲解Python中的递归函数
2015/04/27 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
查看django版本的方法分享
2018/05/14 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Python的in,is和id函数代码实例
2020/04/18 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
合作经营协议书范本
2014/04/17 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
企业精神口号
2014/06/11 职场文书
财会专业大学生求职信
2014/09/26 职场文书
爱心捐款感谢信
2015/01/20 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
创业计划书之农家乐
2019/10/09 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
python中pymysql包操作数据库方法
2022/04/19 Python
选购到合适的激光打印机
2022/04/21 数码科技