Laravel Daily 日志权限问题

问题:

执行 schedule:run 的是 www 用户,

crontab -e -u www
* * * * * cd /my_project/ && php artisan schedule:run >> /dev/null 2>&1

并且在 logging 中也配置了

'daily' => [
    ...
    'permission' => 0666,
],

创建出来的日志文件权限依然是 644,导致写入日志失败报错。


分析:

分析具体原因可能是因为 Linux 默认的创建文件模式设定为 644,即 umask 的优先级高于 Laravel 的 logging.php 配置,导致创建文件权限错误。

CLI 输入 umask 查看

umask
0022

Unix 系统对于新创建文件基准权限是 666 再减去 umask 的 022,导致创建文件的权限就是 644,猜测是这样。

解决方法

* * * * * umask 000 && cd /my_project/ && php artisan schedule:run >> /dev/null 2>&1
php artisan config:clear

忘了清缓存了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
悲观者永远正确,乐观者永远前行。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

下面这样配置也能解决问题 问答:laravel写入日志时的执行环境问题?

1年前 评论
MArtian (楼主) 1年前

sudo -E -u www php artisan **

1年前 评论

确定定时任务用户跟php-fpm(或者启动服务的用户)一致就没问题

1年前 评论

微信号多少

10个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!