如何更改NGINX用户?

我有一个PHP脚本创build一个目录,并将图像输出到目录。 这在Apache下工作得很好,但是我们最近决定切换到NGINX来更多地使用我们有限的RAM。 我正在使用PHP mkdir()命令来创build目录:

mkdir(dirname($path['image']['server']), 0755, true); 

切换到NGINX后,我收到以下警告:

 Warning: mkdir(): Permission denied in ... 

我已经检查了父目录的所有权限,所以我确定我可能需要更改NGINX或PHP-FPM的“用户”,但我不知道该怎么做(我从来没有指定用户APACHE权限)。 我似乎无法find关于此的很多信息。 任何帮助将是伟大的!

(注意:除了这个小小的挂断之外,切换到NGINX已经非常的无缝了,我第一次使用它,从字面上来说,花了大约10分钟就可以用NGINX启动和运行。摆脱困境。)

以www:www运行nginx&php-fpm

1. Nginx

编辑nginx.conf并将用户设置为www www;

如果主进程以root身份运行,那么nginx会将setuid()/ setgid()设置为USER / GROUP。 如果没有指定GROUP,则nginx使用与USER相同的名称。 默认情况下,它是nobody用户和nobody或nogroup组,或者是./configure脚本中的–user = USER和–group = GROUP。

2. PHP-FPM

编辑php-fpm.conf并将用户和组设置为www

用户 – 进程的Unix用户。 默认的“www-data”

组 – Unix进程组。 默认的“www-data”

Ubuntu 14.04中,更改PHP-FPM中的 用户的文件是: /etc/php5/fpm/pool.d/www.conf 。 在这个文件中改变这些参数:

 user = www group = www listen.owner = www listen.group = www 

要回答你的实际问题 ,只需要改变nginx.confuser行就像这样:

 user [username]; 

例:

 user www-data; 

Nginx实际运行的首选用户在操作系统上是不同的。 有时Nginx应该运行为www-data 。 其他时候实际上应该是nobody运行的。

在某些操作系统(如Windows)上,甚至没有关系,并且nginx.confuser行可以被注释掉或完全被排除。