php fpm由2个用户运行,导致权限问题
我的php fpm由2个用户运行,导致权限问题,php,laravel,ubuntu,nginx,Php,Laravel,Ubuntu,Nginx,我的ps aux | grep php fpm输出 root 22583 0.0 0.3 447796 26580 ? Ss 15:00 0:00 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf) www-data 22605 0.0 0.7 1420740 58344 ? S 15:00 0:01 php-fpm: pool www www-data 22608 0.0
ps aux | grep php fpm
输出
root 22583 0.0 0.3 447796 26580 ? Ss 15:00 0:00 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data 22605 0.0 0.7 1420740 58344 ? S 15:00 0:01 php-fpm: pool www
www-data 22608 0.0 0.4 457224 40184 ? S 15:00 0:00 php-fpm: pool www
ubuntu 23865 0.0 0.0 15184 1044 pts/1 S+ 17:08 0:00 grep --color=auto php-fpm
正如您在最后一行中看到的,php fpm
由ubuntu
运行,而不是www-data
(我使用nginx+php,其中nginx用户是www-data
,我假设我的问题出在这里)。因此,在我的应用程序(基于Laravel)中,日志文件是代表ubuntu
用户创建的。当应用程序正在运行其抛出权限被拒绝错误时。因为它无法读取日志文件
当我将日志文件加载到www-data
时,它工作正常。但是每一个新的日志文件都是属于ubuntu
用户的,然后我每天都要chown
他们:(.我怎样才能改变php fpm
的用户来解决权限问题
编辑:我还将ubuntu
用户添加到www-data
组中,但是ubuntu
仍然无法编辑www-data
您可以使用setfacl
HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1)
sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX /log/folder/laravel/project
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX /log/folder/laravel/project
请参阅symfony docs:通常,您的web服务器用户应该是创建日志文件(www数据)的用户。Le日志文件应该可以由web服务器运行时的同一用户写入 我建议权限设置如下:
chmod-R 755存储器/
安装Laravel后,您可能需要配置一些权限。存储和引导/缓存目录中的目录应由web服务器写入,否则Laravel将不会运行
您还可以查看Laravel 5.8本地驱动程序的权限文档:
您还可以在各自的配置文件中更改php fpm和nginx用户和组。在symfony中,我使用setfacl,可以帮助您吗?我试过了。但大多数情况下,当一个新的日志文件由ubuntu创建时,它的所有者是ubuntu。是的@Shobi,但www数据也可以写入它们。您不想要ubuntu拥有的文件吗?只有www数据?只要重新启动即可ed服务器。您的回答似乎暂时解决了这个问题,谢谢:)