问下为啥我这个laravel提示对logs目录没有权限呢?

情况是这样的,我用docker安装了一个lnmp环境,然后呢

root@5b191723d537:/home/www/test/storage/logs# ls -l
total 536
-rwxr-xr-x 1 root root  15296 Apr 30 07:11 laravel-2024-04-30.log
-rwxr-xr-x 1 root root 174680 May  6 05:47 laravel-2024-05-06.log
-rwxr-xr-x 1 root root  47932 May  7 02:28 laravel-2024-05-07.log
-rwxr-xr-x 1 root root  11924 May  9 07:48 laravel-2024-05-09.log
-rwxr-xr-x 1 root root  23866 May 21 02:21 laravel-2024-05-21.log
-rwxr-xr-x 1 root root  25688 May 31 07:47 laravel-2024-05-31.log
-rwxr-xr-x 1 root root  11983 Jun  3 03:04 laravel-2024-06-03.log
-rwxr-xr-x 1 root root  77278 Jun  6 08:51 laravel-2024-06-06.log
-rwxr-xr-x 1 root root  12828 Jun  7 02:49 laravel-2024-06-07.log
-rwxr-xr-x 1 root root  38274 Jun 17 08:52 laravel-2024-06-17.log
-rwxr-xr-x 1 root root  28054 Jun 18 08:25 laravel-2024-06-18.log
-rwxr-xr-x 1 root root  12622 Jul  1 02:39 laravel-2024-07-01.log
-rwxr-xr-x 1 root root  30592 Jul 13 15:11 laravel-2024-07-13.log
-rwxr-xr-x 1 root root  12828 Aug  7 09:01 laravel-2024-08-07.log
root@iZbp15deibg78q3ygsmtfjZ:/home/wwwlogs/nginx# ps -ef |grep nginx
root       31890   31861  0 10:36 ?        00:00:00 nginx: master process nginx -g daemon off;
systemd+   31947   31890  0 10:36 ?        00:00:00 nginx: worker process
systemd+   31948   31890  0 10:36 ?        00:00:00 nginx: worker process
root@iZbp15deibg78q3ygsmtfjZ:/home/wwwlogs/nginx# ps -ef |grep php
root       31691   31667  0 10:36 ?        00:00:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
www-data   31818   31691  0 10:36 ?        00:00:00 php-fpm: pool www
www-data   31819   31691  0 10:36 ?        00:00:00 php-fpm: pool www
root       32513   32417  0 11:09 pts/8    00:00:00 grep --color=auto php

nginx容器的nginx进程用户是systemd+ 但nginx容器里面的user是nginx不知为啥变成这个了。然后php容器php进程用户是www-data
然后项目的test用户宿主机和nginx容器里面和php容器里面都是root用户

root@a385b870038a:/home/www/test# ls -l
total 512
drwxr-xr-x 11 root root   4096 Aug 22 21:34 app
-rwxr-xr-x  1 root root   1686 Aug 12  2020 artisan
drwxr-xr-x  3 root root   4096 Aug 22 21:34 assets
drwxr-xr-x  3 root root   4096 Aug 22 21:34 bootstrap

然后我请求就是报错如下
The stream or file “/home/www/test/storage/logs/laravel-2024-08-23.log” could not be opened: failed to open stream: Permission denied
有没有高手看看这是为什么?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 8

文件权限是777可能不是权限导致的,看看其它原因

7个月前 评论

就是不同容器,用户权限问题导致,最快解决方式,直接在php容器logs 设置为 777,777,777;也可以通过setfacl设置用户权限

7个月前 评论

-rwxr-xr-x

一个普通文件,其拥有者可以读、写、执行它;属于同一组的用户可以读取和执行但不能写;其他用户也可以读取和执行但不能写。

7个月前 评论

nginx 、php 统一用 www-data 权限

同时宿主机添加 www-data, uid gid 需要与容器中的相同

docker-compose 添加 PUID、PGID, dockerfile 使用 这2 个创建用户并赋予权限就可以了

7个月前 评论
kis龍 (作者) 7个月前
donggan (楼主) 7个月前

归属用户不一样

7个月前 评论

crontab 的定时任务归宿用户不一样

7个月前 评论

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