我有一个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
编辑nginx.conf并将用户设置为www www;
如果主进程以root身份运行,那么nginx会将setuid()/ setgid()设置为USER / GROUP。 如果没有指定GROUP,则nginx使用与USER相同的名称。 默认情况下,它是nobody用户和nobody或nogroup组,或者是./configure脚本中的–user = USER和–group = GROUP。
编辑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.conf
的user
行就像这样:
user [username];
例:
user www-data;
Nginx实际运行的首选用户在操作系统上是不同的。 有时Nginx应该运行为www-data
。 其他时候实际上应该是nobody
运行的。
在某些操作系统(如Windows)上,甚至没有关系,并且nginx.conf
的user
行可以被注释掉或完全被排除。