laravel 权限不足,fopen(...storage/log/xxx_query.log):Failed to open stream Permission denied

1. 运行环境

PHP8.1  Ubuntu 20.04 LTS 宝塔

1). 当前使用的 Laravel 版本?

laravel 9.6

4). 业务环境

开发环境

2. 问题描述?

晚上0点一过提示
fopen(.../xxx_query.log):Failed to open stream :Permission denied

3. 自己解决过程

1.给 storage  www用户和777权限 结果无效
2.给 storage  root用户和777权限 结果无效

刚刚查到方案 试试明天z
附录 项目 部分文件 和权限

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
su www -s /bin/bash -c "php artisan schedule:run"

最佳答案

2年前 评论
讨论数量: 24

Ubuntu 不是 www-data 用户吗?

2年前 评论

crotnab 记得用相同权限

2年前 评论
chown -R www:-data:www-data 项目/
或者
chown -R nginx:nginx 项目/

试试这个呢

2年前 评论
ncccc1 (楼主) 2年前
阿珂 (作者) 2年前
declandragon 2年前

是使用daily 模式吗

2年前 评论
ncccc1 (楼主) 2年前
ncccc1 (楼主) 2年前
薄荷蓝的晴天 (作者) 2年前

file 刚刚找到的一个方案 明天再看看会复现吗

2年前 评论
薄荷蓝的晴天 2年前
ncccc1 (作者) (楼主) 2年前

用 crontab -u www-data -e 简洁些

2年前 评论

file

file

2年前 评论
薄荷蓝的晴天 2年前
ncccc1 (作者) (楼主) 2年前
薄荷蓝的晴天 2年前
薄荷蓝的晴天 2年前

file

原因找到 应该是 artisan 运行的是 root 用户造成

2年前 评论

config/logging.php 这样区别一下就可以了

'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/' . php_sapi_name() .'/laravel.log'),
            'level' => getenv('LOG_LEVEL'),
            'days' =>  getenv('LOG_OUTPUT_DAYS'),
        ],
2年前 评论
ncccc1 (楼主) 2年前

如果以 root 用户执行的定时任务先生成 log 文件,那么文件的所有者是 root,nginx 网站用户(例如www)就写不进来,所以要检查非网站用户写入日志的程序,要用网站用户来执行。

2年前 评论
su www -s /bin/bash -c "php artisan schedule:run"

最佳答案

2年前 评论

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