如何更改 NGINX 用户?

Dav*_*vid 52 permissions nginx

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

mkdir(dirname($path['image']['server']), 0755, true);
Run Code Online (Sandbox Code Playgroud)

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

Warning: mkdir(): Permission denied in ...
Run Code Online (Sandbox Code Playgroud)

我已经检查了父目录的所有权限,所以我确定我可能需要更改 NGINX 或 PHP-FPM 'user' 但我不知道该怎么做(我从来没有指定用户APACHE 的权限)。我似乎找不到这方面的太多信息。任何帮助都会很棒!

(注意:除了这个小问题,切换到 NGINX 的过程非常顺畅;我是第一次使用它,实际上只用了 10 分钟就可以启动并运行 NGINX。现在我只是在熨烫解决问题。)

gla*_*vić 74

以 www:www 运行 nginx 和 php-fpm

1. nginx

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

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

2.PHP-FPM

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

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

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

  • @xorinzor:不,使用你拥有的:D (3认同)

小智 34

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

user = www
group = www
listen.owner = www
listen.group = www
Run Code Online (Sandbox Code Playgroud)

  • Ubuntu 16.10 也是这种情况。 (3认同)
  • 这也是 Ubuntu 18.04 的情况 (2认同)

rub*_*ils 7

要回答您的实际问题,只需像这样更改usernginx.conf

user    [username];
Run Code Online (Sandbox Code Playgroud)

例子:

user    www-data;
Run Code Online (Sandbox Code Playgroud)

Nginx 运行的首选用户实际上因操作系统而异。有时 Nginx 应该作为www-data. 其他时候它实际上应该作为nobody.

在某些操作系统(如 Windows)上,这甚至无关紧要,可以将userin 行nginx.conf注释掉或完全排除。