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
附录 项目 部分文件 和权限

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案
su www -s /bin/bash -c "php artisan schedule:run"

最佳答案

3年前 评论
讨论数量: 24

Ubuntu 不是 www-data 用户吗?

3年前 评论

crotnab 记得用相同权限

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

试试这个呢

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

是使用daily 模式吗

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

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

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

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

3年前 评论

file

file

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

file

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

3年前 评论

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

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

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

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

最佳答案

3年前 评论

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