web-dev-qa-db-fra.com

propriétaire des sockets nginx et php-fpm

Après une mise à jour de mon système, je suis tombé sur une erreur de passerelle de ma PHP - application fonctionnant sur Nginx.

1 connect () à unix: /var/run/php-fcgi-vhostname-php-fcgi-0.sock a échoué (13: autorisation refusée) lors de la connexion à l'amont, client: xx.xxx.xx.xx, serveur: localhost , requête: "GET/HTTP/1.1", en amont: "fastcgi: // unix: /var/run/php-fcgi-vhostname-php-fcgi-0.sock:", hôte: "xx.xx.xx. xx "

Le problème est dû à de mauvaises permissions des sockets php-fpm utilisées. En fait, je vois que /var/run/php-fcgi.sock appartient à root:root mais que nginx et php-fpm sont utilisés comme utilisateur www-data.

J'ai déjà édité la configuration php-fpm à /etc/php-fpm.d/www.conf avec:

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

mais cela ne résout pas le problème et lorsque je redémarre nginx et php-fpm, les sockets sont créés avec root:root comme utilisateur/groupe.

La seule solution que j'ai trouvée pour résoudre ce problème consiste à remplacer manuellement le propriétaire des sockets par www-data: www-data. Mais ce n'est pas une vraie solution car chaque fois que je redémarre mes services, je dois l'appliquer à nouveau.

Comment puis-je résoudre ce problème? Je suis sur CentOS 6.5

Modifier:

J'utilise Ajenti-V pour configurer mes hôtes virtuels et mon PHP-FPM. Il crée un nouveau socket pour chaque site web/vhost, et ils sont définis dans /etc/php-fpm.conf

Ils ont cette structure:

[vhostname-php-fcgi-0]
user = www-data
group = www-data

listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock

pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5

Si j'ajoute à chaque entrée ces chaînes:

listen.owner = www-data
listen.group = www-data
listen.mode = 0666

Tout fonctionne correctement.

On dirait donc que le fichier www.conf n'est pas inclus (peut-être?). Voici mon php-fpm.conf:

[global]
pid = /var/run/php-fpm/php-fpm.pid
error_log = /var/log/php5-fpm.log


[global-pool]
user = www-data
group = www-data
listen = /var/run/php-fcgi.sock

pm = dynamic
pm.start_servers = 1
pm.max_children = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 5


[vhostname-php-fcgi-0]
user = www-data
group = www-data

listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock

pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
13
Fez Vrasta

NGINX s'exécute en tant qu'utilisateur nginx et php5-fpm en tant qu'utilisateur www-data. Ajoutez simplement nginx au groupe www-data et le problème est résolu, et nginx peut accéder à /var/run/php5-fpm.sock. Fonctionne très bien avec Ubuntu 14.04, nginx 1.7.10, PHP 5.5.9-1ubuntu4.6 (fpm-fcgi):

$ Sudo usermod -aG www-data nginx
5
AnthumChris

tout le monde! C’est mon problème aussi .. Je viens de changer mon utilisateur fpm en vagabondeur, redémarrer mes piscines et ... c’est fait! Voici mon conf:

user = vagrant
group = nginx

listen.owner = vagrant
listen.group = nginx
listen.mode = 0660

J'espère que ça peut aider quelqu'un.

1
jordan

Bonjour à tous et merci pour l'aide, dans mon cas avec le serveur Ubuntu 14.04 nginx et php5-fpm, le problème avec le propriétaire du socket php-fpm par root a été résolu en modifiant le fichier/etc/php5/fpm/pool.d/www.conf Décommentez les lignes:

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

D'une installation claire, le propriétaire et le groupe de nginx sont www-data ..___. Je pense que la meilleure pratique consiste à examiner /etc/nginx/nginx.conf et à vérifier que, dans la première ligne, il s'agit:

user www-data;

Et utilisez l'utilisateur par défaut, Chears!

0
Dimitrios

Il suffit de faire autre chose

Ma configuration Vagrant/Ubuntu 16/Nginx 1.13/PHP-FPM 7.1

Sudo vi /etc/nginx/nginx.conf

Changer l'utilisateur de première ligne nginx => utilisateur www-data

service nginx restart
0
Tidytrax

Sur mon installation, Centos 7.5, Apache avec php 7.1 et php 5.6, j'ai eu le même problème où je devais corriger manuellement les permissions sur php56-php.fpm.sock (propriété de root) après chaque redémarrage.

Ma configuration pour php56 était ici et peut être différente sur votre installation: /opt/remi/php56/root/etc/php-fpm.d/www.conf

J'ai changé cette section commentée dans le fichier:

listen.owner = nginx
listen.group = nginx
listen.mode = 0666

Maintenant, après le redémarrage, tout va bien avec les autorisations appropriées sur le fichier de socket. Pas sûr de la listen.mode. Je pense que 0660 fonctionne aussi. 

0
Asle