web-dev-qa-db-fra.com

Comment changer l'utilisateur NGINX?

J'ai un script PHP qui crée un répertoire et génère une image dans le répertoire. Cela fonctionnait très bien sous Apache mais nous avons récemment décidé de passer à NGINX pour utiliser davantage notre RAM limitée. J'utilise la commande PHP mkdir () pour créer le répertoire:

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

Après le passage à NGINX, je reçois l'avertissement suivant:

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

J'ai déjà vérifié toutes les autorisations des répertoires parents, j'ai donc déterminé que je devrais probablement changer l'utilisateur NGINX ou PHP-FPM mais je ne sais pas comment faire (je n'ai jamais eu à spécifier d'utilisateur autorisations pour Apache). Je n'arrive pas à trouver beaucoup d'informations à ce sujet. Toute aide est la bienvenue!

(Remarque: Outre ce petit blocage, le passage à NGINX a été assez transparent; je l'utilise pour la première fois et il n'a fallu que 10 minutes environ pour être opérationnel avec NGINX. Maintenant, je repasse les plis.)

44
David

Exécutez nginx et php-fpm en tant que www: www

1. Nginx

Modifiez nginx.conf et définissez tilisateur sur www www;

Si le processus maître est exécuté en tant que root, nginx définira setuid ()/setgid () sur USER/GROUP. Si GROUP n'est pas spécifié, alors nginx utilise le même nom que USER. Par défaut, il s'agit de personne nobody et nobody ou nogroup group ou --user = USER et --group = GROUP du script ./configure.

2. PHP-FPM

Modifiez php-fpm.conf et définissez l'utilisateur et le groupe sur www.

user - Utilisateur Unix des processus. "Www-data" par défaut

group - Groupe de processus Unix. "Www-data" par défaut

64
glavić

Dans Ubuntu 14.04 le fichier à modifier tilisateur et groupe dans PHP-FPM est: /etc/php5/fpm/pool.d/www.conf. Dans ce fichier, modifiez ces paramètres:

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

Pour répondre à votre question réelle, il suffit de modifier la ligne user dans nginx.conf ainsi:

user    [username];

Exemple:

user    www-data;

L'utilisateur préféré pour l'exécution de Nginx diffère en fait d'un système d'exploitation à l'autre. Parfois, Nginx est censé fonctionner comme www-data. D'autres fois, il est censé s'exécuter en tant que nobody.

Sur certains systèmes d'exploitation (tels que Windows), cela n'a même pas d'importance, et la ligne user dans nginx.conf peut être mis en commentaire ou entièrement exclu.

6
rubynorails

La solution suivante a fonctionné en changeant l'utilisateur Web avec moi en utilisant Ubuntu 18.04 LTS, nginx 1.14 et php7.2-fpm.

1. Nginx

Éditer /etc/nginx/nginx.conf et définissez l'utilisateur sur webuser;

user webuser;

2. PHP-FPM

Éditer /etc/php/7.2/fpm/pool.d/www.conf.

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