我有一个nginx设置在一台testing机器上,托pipeWordpress。 我试图找出一些权限问题,并遇到了一些我无法弄清楚的东西。
即使在我知道的所有地方,我都说它是用户的'nginx', whoami报告'apache'。
ps aux | grep [n]ginx ps aux | grep [n]ginx ,主进程以root身份运行,worker以nginx身份运行。 <?php echo(exec("whoami")); ?> <?php echo(exec("whoami")); ?>在一个PHP页面上,它响应为“Apache” 我似乎无法find其他地方看到这个Apache帐户。 我甚至想删除它,但userdel说,当我尝试这个用户login。
在Nginx设置中,您可能使用PHP-FPM来解释PHP脚本。 PHP-FPM有自己的configuration,它定义了池。 每个池可以作为自己的用户运行。 实质上:Nginx需要能够直接读取(静态)直接从其中获得的文件(以及遍历(即x)目录的权限),PHP-FPM(相关的池)需要具有对这些文件的读取权限,写入文件夹(或任何您想要修改的文件)的访问权限(以及遍历权限)。
PHP-FPMconfiguration通常位于/etc/php-fpm.conf和/etc/php-fpm.d/*.conf
PHP-FPMconfiguration的相关部分可能如下所示:
[pool_name] listen = 127.0.0.1:9000 user = apache group = apache
检查PHP-FPM正在运行的用户: ps -ef | grep php-fpm ps -ef | grep php-fpm (如果你有多个池,你可能有多个php-fpm实例,可能有多个用户)。
(顺便说一句,如果你查看你的Nginxconfiguration,你可能会发现FastCGI处理程序的引用,例如: fastcgi_pass 127.0.0.1:9000;这里指定的地址和端口需要匹配池的地址和端口您正在修改的用户/组)。
此外,仅用于诊断目的,而不是查看nginx正在运行的用户,您可能已经能够search用户apache(即ps -ef | grep apache )运行的程序。
这取决于你的php脚本如何运行,它们要么在apache服务器上运行,要么nginx将php请求redirect到它,或者它们正在以apache运行的php-fpm / FastCGI进程运行。 你需要检查这个,如果这是你需要的,使它们作为nginx运行。
如果正在使用php-fpm,则需要在/etc/php-fpm.d/下find相应的configuration,例如/etc/php-fpm.d/somesite.conf,并确保接下来的行如下所示:
user = nginx group = nginx
然后通过发出以下命令重新启动你的php-fpm安装
service php-fpm restart
要么
/etc/init.d/php-fpm restart