php nobody log,laravel的日志权限 页面报错

命令行脚本运行时报错

UnexpectedValueException  : The stream or file "/Data/PMS/storage/logs/laravel-2019-04-17.log" could not be opened: failed to open stream: Permission denied

查看文件权限

-rw-r--r--  1 www_data  www_data    37K Apr 17 11:06 laravel-2019-04-17.log

有时候 laravel 会出现无权限写日志的问题,我们可以按以下步骤去检查:

运行 laravel 的 php-fpm 是什么用户,一般是 www/nobody,不要使用 root。

laravel 项目中的 storage/logs 目录 www/nobody 用户是否有读写权限。

是否有运行 crontab/supervisor/laravel 脚本,切运行的用户是否是 www/nobody。注意!如果以其他身份(例如 root)运行脚本,laravel 可能会创建当天的日志文件,那这个日志文件是属于其他用户的,www/nobody 用户无法写入。

解决办法

修改 php-fpm 的配置文件,修改 user 和 group 为 www/nobody。

chmod a+w storage/logs

运行任何 laravel 的脚本需要注意运行的用户,supervisor 可以设置用户,crontab 可以加在 www/nobody 用户下。手动运行脚本可以 su www/nobody。

执行 crontab -e 的时候添加 -u 选项,并追加相应的用户名,就可以为指定的用户编辑定时任务列表。

$ crontab -u nobody -e

* * * * * edit the command you want to execute for user nobody

执行 crontab -u nobody -l 选项可以查看 nobody 用户的任务列表。

$ crontab -u nobody -l

* * * * * command one for user nobody

* * * * * command two for user nobody

web页面运行时报错,已经创建了这个文件,这是 php-fpm的用户与命令行用户不一致导致的,可以通过修改用户解决这个问题,但是还有更好的办法

更好的办法 config/logging.php 文件增加 daily->permission 配置 'permission' => 0666, 框架版本为 Laravel Framework 5.8.11。详情请看https://www.cnblogs.com/hailspace/p/10775239.html

框架版本为 Laravel Framework 5.8.11

'channels' => [

//自定义频道

'mylog' => [

// 日志驱动模式:

'driver' => 'daily',

// 日志存放路径

'path' => storage_path('logs/mylog.log'),

// 日志等级:

'level' => 'info',

// 日志分片周期,多少天一个文件

'days' => 1,

'permission'=>0666

],

]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值