手机版

laravel日志写入失败总结

时间:2021-08-19 来源:互联网 编辑:宝哥软件园 浏览:

投掷问题

项目部署到Linux服务器后,有时会出现无法写入每日日志的问题。本文总结了常见问题及解决方法。

许可问题

无法写入日志的原因是代码更新时文件是root,所以创建日志文件也是root权限,导致其他用户的www权限无法写入日志文件。

因此,将存储/日志/的用户权限修改为www

chown www:www存储/日志-R

注意:如果用户使用supervisord服务运行队列,如果队列中有日志记录,那么运行的用户也需要改为www用户。

另一个解决方案是修改日志的源代码。

在web模式下由laravel生成的日志文件(存储/日志)是由www-data用户创建的,而在命令行(php artisan)模式下,它们是由当前登录系统用户创建的。

这两个用户不在同一个组中,这导致操作后功能无法写入日志文件。要解决这个问题,在使用Monolog框架时需要修改Laravel的源代码。

要修改的文件在供应商/laravel/framework/src/illuminate/log/writer . PHP的第229行.

$ handler=新的循环文件处理程序($ path,$ days,$ this-parse level ($ level))更改为

$ handler=新的循环文件处理程序($ 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用户,删除根定时任务。第二天,再也没有写不出日志的问题了。

因此,计划的任务不再执行。从来没有遇到过这样的情况,所以www用户和root用户都配置了定时任务。因此,日志仍然是不可写的。

解决方案步骤2:经过艰难的搜索,打开了最后一个日志。

*表示可能有许多以cron开头的日志,所以只需打开最后一个。

参见图VI/var/log/cron *:

查看计划任务的错误日志,进入主目录,建立www文件夹。授予权力。完成问题解决。

以上关于laravel日志写失败的总结,都是边肖分享的内容,希望能给大家一个参考和支持。

版权声明:laravel日志写入失败总结是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。