web-dev-qa-db-ja.com

NGINXユーザーを変更するにはどうすればよいですか?

私はPHPスクリプトを使用して、ディレクトリを作成し、イメージをディレクトリに出力します。これはApacheで正常に動作していましたが、最近、NGINXに切り替えて、限られたRAMをさらに活用することにしました。 PHP mkdir()コマンドを使用してディレクトリを作成しています:

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

NGINXに切り替えた後、次の警告が表示されます。

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

私はすでに親ディレクトリのすべての権限を確認したので、おそらくNGINXまたはPHP-FPMの「ユーザー」を変更する必要があると判断しましたが、その方法がわかりません(ユーザーを指定する必要はありませんでした) Apacheの権限)。私はこれについて多くの情報を見つけることができないようです。どんな助けでも素晴らしいです!

(注:この小さなハングアップに加えて、NGINXへの切り替えは非常にシームレスでした。初めて使用しましたが、文字通りNGINXを起動して実行するのに約10分しかかかりませんでした。ねじれのうち。)

44
David

Nginxとphp-fpmをwww:wwwとして実行

1. Nginx

Nginx.confを編集して serwww www;に設定します

マスタープロセスがルートとして実行されている場合、nginxはUSER/GROUPにsetuid()/ setgid()を実行します。 GROUPが指定されていない場合、nginxはUSERと同じ名前を使用します。デフォルトでは、nobodyユーザー、nobody、nogroupグループ、または./configureスクリプトの--user = USERおよび--group = GROUPです。

2. PHP-FPM

php-fpm.conf を編集し、ユーザーとグループをwwwに設定します。

user-プロセスのUnixユーザー。デフォルトの「www-data」

group-Unixプロセスのグループ。デフォルトの「www-data」

64
glavić

Ubuntu 14.04で、変更するファイルserおよびgroupPHP-FPMは:/etc/php5/fpm/pool.d/www.conf。このファイルで、次のパラメーターを変更します。

user = www
group = www
listen.owner = www
listen.group = www
27
iarroyo

実際の質問に答えるには、nginx.confuser行を次のように変更するだけです。

user    [username];

例:

user    www-data;

Nginxを実行するための優先ユーザーは、実際にはオペレーティングシステムによって異なります。 Nginxはwww-dataとして実行されることになっていることがあります。また、実際にはnobodyとして実行されることになっています。

一部のオペレーティングシステム(Windowsなど)では、問題にならず、nginx.confuser行をコメント化するか、完全に除外することができます。

6
rubynorails

次の解決策は、Ubuntu 18.04 LTSnginx 1.14、およびphp7.2-fpmを使用して、私と一緒にWebユーザーを変更することで機能しました。

1. Nginx

/etc/nginx/nginx.confを編集し、ユーザーをwebuser;に設定します

user webuser;

2. PHP-FPM

/etc/php/7.2/fpm/pool.d/www.confを編集します。

user = webuser
group = webuser
...
listen.owner = webuser
listen.group = webuser
1
AboElnouR