laravel日志写入失败总结
投掷问题
项目部署到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或者邮箱删除。