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
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
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
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.
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!
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
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.