erreur NGINX connectez-vous à php5-fpm.sock failed (13: Permission refusée)

- je mettre à jour nginx 1.4.7 et php pour 5.5.12 , Après que j'ai eu la erreur 502 . Avant que je mette à jour tout fonctionne bien.

nginx-erreur.log

2014/05/03 13:27:41 [crit] 4202#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xx.xx.xx.xx"

nginx.conf

user  www www;
worker_processes  1;

        location / {
            root   /usr/home/user/public_html;
            index  index.php index.html index.htm;
        }
        location ~ [^/].php(/|$) {
            fastcgi_split_path_info ^(.+?.php)(/.*)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME    /usr/home/user/public_html$fastcgi_script_name;
            include fastcgi_params;
        }
254
demandé sur ketan 2014-05-03 14:47:54

20 réponses

j'ai eu une erreur similaire après la mise à jour de php. PHP a corrigé un bogue de sécurité o avait rw permission au fichier socket.

  1. Ouvrir /etc/php5/fpm/pool.d/www.conf ou /etc/php/7.0/fpm/pool.d/www.conf , selon votre version.
  2. Décommenter toutes les autorisations lignes, comme:

    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
    
  3. redémarrer fpm - sudo service php5-fpm restart ou sudo service php7.0-fpm restart

Note : si votre serveur web fonctionne en tant qu'utilisateur autre que www-data, vous devrez mettre à jour le fichier www.conf en conséquence

570
répondu Xander 2016-09-25 21:21:52

toutes les corrections actuellement mentionnées ici activent à nouveau le trou de sécurité.

ce que j'ai fini par faire est d'ajouter les lignes suivantes à mon fichier de configuration PHP-FPM.

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

assurez-vous que www-data est bien l'utilisateur sous lequel NGINX worker est lancé. Pour debian c'est www-data par défaut.

le faire de cette façon ne permet pas le problème de sécurité que ce changement était supposé pour fixer .

100
répondu artooro 2014-05-14 23:17:11

la solution de @Xander fonctionne, mais ne persiste pas après un redémarrage.

j'ai constaté que je devais changer listen.mode en 0660 en /etc/php5/fpm/pool.d/www.conf .

de l'Échantillon à partir de www.conf:

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. 
; Default Values: user and group are set as the running user
;                 mode is set to 0660
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660

Edit: Per @Chris Burgess, j'ai changé ceci à la méthode plus sûre.

j'ai supprimé le commentaire pour listen.mode. ,groupe et .le propriétaire:

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

/var / run contient uniquement des informations sur le système en cours d'exécution depuis le dernier démarrage, par exemple les utilisateurs connectés et les démons en cours d'exécution. ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure ).

note de Côté:

Mon php5-fpm -v , Rapporte: PHP 5.4.28-1+deb.sury.org~precise+1 . Le problème est arrivé après une mise à jour récente.

45
répondu Eric C 2014-05-16 14:58:35

si vous avez tout essayé dans ce post mais n'avez pas de succès pour faire fonctionner PHP, c'est ce qui l'a corrigé pour mon cas:

assurez-vous que ces lignes ne sont pas comptées dans /etc/php5/fpm/pool.d / www.conf:

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

assurez-vous que /etc/nginx/fastcgi_params ressemble à ceci:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  PATH_INFO          $fastcgi_script_name;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

ces deux lignes manquaient dans mon/etc/nginx / fastcgi_params, assurez-vous qu'elles sont là!

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  PATH_INFO          $fastcgi_script_name;

puis, redémarrez php5-fpm et nginx. Devrait faire l'affaire.

36
répondu aMMT 2014-10-01 18:11:48

en fait," écoutez.mode "devrait être: "0660" et non "0666" comme autre Writable ou autre lisible n'est jamais un bon choix ici.

alors essayez de savoir quel utilisateur/groupe utilise votre serveur web. J'utilise CentOs et il fonctionne comme utilisateur " nginx" Alors ajoutez à votre php-fpm.conf:

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

enfin redémarrer php-fpm

23
répondu CRHenkie 2014-06-13 07:41:38

Vérifiez quel utilisateur exécute nginx. Depuis Ubuntu 12.04 NGINX fonctionne par l'utilisateur nginx qui n'est pas un membre de www-data group.

usermod-A-G www-data nginx

et redémarrer les démons Nginx et php5-fpm résout le problème.

21
répondu Çağatay Gürtürk 2015-01-10 18:49:21

Alternative à l'élargissement des permissions dans votre config php, vous pouvez changer l'utilisateur spécifié dans votre config nginx.

Sur la première ligne de votre nginx.extrait de conf ci-dessus, l'utilisateur et le groupe sont spécifiés comme www et www, respectivement.

user  www www;

pendant ce temps, votre config php spécifie probablement un utilisateur et un groupe de www-data:

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

vous pourriez changer la ligne de votre nginx.conf, à toute de la suivant, alors:

user www-data www;
user www-data www-data; # or any group, really, since you have the user matching
user www www-data; # requires that your php listen.mode gives rw access to the group
11
répondu JellicleCat 2014-06-26 18:56:25

il faut également tenir compte de vos piscines individuelles de TPM, le cas échéant.

Je ne comprenais pas pourquoi aucune de ces réponses ne fonctionnait pour moi aujourd'hui. C'était un scénario que j'avais oublié, où j'avais oublié d'écouter.de l'utilisateur et de les écouter.les groupes ont été dupliqués sur une base par pool.

si vous avez utilisé des pools pour différents comptes utilisateurs comme je l'ai fait, où chaque compte utilisateur possède ses processus FPM et sockets, paramétrant seulement la valeur par défaut écouter.propriétaire et écoutez.les options de configuration de groupe vers 'nginx' ne fonctionneront tout simplement pas. Et évidemment, laisser 'nginx' les posséder tous n'est pas acceptable non plus.

pour chaque piscine , assurez-vous que

listen.group = nginx

sinon, vous pouvez laisser la propriété de la piscine et autres.

6
répondu Ted Phillips 2014-08-06 15:33:56

je viens de recevoir cette erreur à nouveau aujourd'hui que j'ai mis à jour ma machine (avec des mises à jour pour PHP) en cours d'exécution Ubuntu 14.04 . Le fichier de configuration de la distribution /etc/php5/fpm/pool.d/www.conf est correct et ne nécessite aucune modification actuellement.

j'ai trouvé les erreurs suivantes:

dmesg | grep php
[...]
[ 4996.801789] traps: php5-fpm[23231] general protection ip:6c60d1 sp:7fff3f8c68f0 error:0 in php5-fpm[400000+800000]
[ 6788.335355] traps: php5-fpm[9069] general protection ip:6c5d81 sp:7fff98dd9a00 error:0 in php5-fpm[400000+7ff000]

la chose étrange était que j'ai 2 sites en cours d'exécution qui utilisent PHP-FPM sur cette machine l'un fonctionnait bien et l'autre (une minuscule installation RSS) a donné me a 502, où les deux ont été en cours d'exécution amende avant .

j'ai comparé les deux fichiers de configuration et j'ai trouvé que fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; manquait pour le site affecté.

les deux fichiers de configuration contiennent maintenant le bloc suivant et fonctionnent à nouveau correctement:

location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        include /etc/nginx/snippets/fastcgi-php.conf;
}

mise à Jour

Il convient de noter que Ubuntu envoyé deux fastcgi paramètre de fichiers et aussi un extrait de configuration qui est disponible depuis Vivid et aussi dans la version PPA . La solution a été mise à jour en conséquence.

Diff de la fastcgi les fichiers de paramètres:

$ diff -up fastcgi_params fastcgi.conf
--- fastcgi_params      2015-07-22 01:42:39.000000000 +0200
+++ fastcgi.conf        2015-07-22 01:42:39.000000000 +0200
@@ -1,4 +1,5 @@

+fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
 fastcgi_param  QUERY_STRING       $query_string;
 fastcgi_param  REQUEST_METHOD     $request_method;
 fastcgi_param  CONTENT_TYPE       $content_type;

exemple de Configuration dans /etc/nginx/snippets/fastcgi-php.conf

# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;
6
répondu LiveWireBT 2015-09-17 12:32:54

le correctif simple suivant a fonctionné pour moi, contournant les problèmes de permissions possibles avec la socket.

dans votre configuration nginx, définissez fastcgi_pass à:

fastcgi_pass   127.0.0.1:9000;

au lieu de

fastcgi_pass   /var/run/php5-fpm.sock;

cela doit correspondre au paramètre listen = dans /etc/php5/fpm/pool.d / www.conf, donc mettez aussi ceci à:

listen = 127.0.0.1:9000;

puis redémarrer php5 - fpm et nginx

service php5-fpm restart

et

service nginx restart

pour plus d'informations, voir: https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm /

4
répondu supershnee 2016-10-10 19:50:17

Simple mais efficace..

listen.owner = nginx
listen.group = nginx

chown nginx:nginx /var/run/php-fpm/php-fpm.sock
3
répondu Terry Lin 2017-01-26 13:18:27

j'ai corrigé la même question sur Amazon Linux AMI 2016.09 (Centos 7) en prenant les mesures suivantes.

ouvrez votre www.fichiers conf (exemple : sudo nano /etc/php-fpm.d / www.conf) Enfin, trouvez les lignes qui définissent l'écoute.propriétaire et écoutez.groupez et changez leurs valeurs de "nobody" en" nginx":

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

enfin, trouvez les lignes qui positionnent l'utilisateur et le groupe et changez leurs valeurs de "apache" en " nginx":

user = nginx
group = nginx

Redémarrer php-fpm (sudo service de php-fpm redémarrer)

3
répondu Nanhe Kumar 2017-03-08 16:53:05

le problème dans mon cas était que le serveur web Nginx fonctionnait en tant qu'utilisateur nginx et que le pool fonctionnait en tant qu'utilisateur www-data.

j'ai résolu le problème en changeant L'utilisateur Nginx est en cours d'exécution dans le fichier /etc/nginx/nginx.conf (pourrait être différent sur votre système, le mien est Ubuntu 16.04.1)

changement: user nginx;

à: user www-data;

puis redémarrer Nginx: service nginx restart

3
répondu EarthMind 2018-07-25 11:16:38

après la mise à niveau de Ubuntu 14.04 lts à Ubuntu 16.04 lts j'ai trouvé une autre raison pour cette erreur que je n'ai pas vu auparavant.

au cours du processus de mise à niveau, j'avais perdu d'une manière ou d'une autre mon exécutable php5-fpm. Tous les fichiers de configuration étaient intacts et il m'a fallu un certain temps pour réaliser que service php5-fpm start n'a pas vraiment commencé un processus, car il ne montrait pas d'erreurs.

mon moment de réveil fut quand j'ai remarqué qu'il n'y avait pas de prise fichier dans /var/run/php5-fpm.sock , comme il se doit, ni ne netstat -an afficher les processus en écoute sur le port que j'ai essayé, comme une alternative, tout en essayant de résoudre ce problème. Comme le fichier / usr/sbin / php5-fpm n'existait pas, j'étais finalement sur la bonne voie.

afin de résoudre ce problème, j'ai mis à jour php de la version 5.5 à la version 7.0. apt-get install php-fpm a fait l'affaire comme effet secondaire. Après cela, et l'installation d'autres paquets nécessaires tout était de retour à la normale.


Cette solution de mise à niveau peut avoir des problèmes propres , cependant. Depuis php a évolué un peu, il est possible que le logiciel se casse de manière inimaginable. Donc, même si j'ai suivi cette voie, vous voudrez peut-être garder la version que vous aimez un peu plus longtemps.

heureusement, il semble qu'il y ait une bonne façon pour que , comme décrit sur le Personnaliser le site Windows:

add-apt-repository ppa:ondrej/php
apt-get purge php5-common
apt-get update
apt-get install php5.6

bien que ce soit plus facile, je n'ai pas essayé. J'espère que les prochains jours me diront si j'aurais dû.

1
répondu sankari 2016-09-14 21:22:06

vérifier également SELINUX (/etc / selinux):

# getenforce

éteindre:

# setenforce 0
1
répondu alchemist 2018-03-07 21:46:31

juste pour ajouter, sur CentOS (et probablement Red Hat et Fedora) le fichier pour changer les permissions est à:

/etc / php-fpm.d / www.conf

0
répondu Adrian Stride 2015-02-05 20:57:18

j'ai changé de système D'exploitation sur mon serveur plusieurs fois en essayant d'obtenir le système le plus confortable.

il fonctionnait très bien la plupart du temps, mais finalement j'ai eu cette erreur de passerelle 502.

j'utilise un socket php fpm pour chaque compte au lieu de garder le même pour tous. Donc, si l'une tombe en panne, au moins les autres applications continuent de fonctionner.

j'avais l'habitude d'avoir l'utilisateur et le groupe www-data. Mais cela a changé sur ma Debian 8 avec les dernières Nginx 1.8 et php5-fpm.

l'utilisateur par défaut est nginx et donc le groupe. Pour en être sûr, la meilleure façon est de vérifier /etc/group et /etc/passwd fichiers. Ces ne peut pas mentir.

c'est là que j'ai trouvé que maintenant j'ai nginx dans les deux et plus www-data.

peut-être que cela peut aider certaines personnes qui essayent encore de savoir pourquoi le message d'erreur continue à apparaître.

ça a marché pour moi.

0
répondu Marc Quattrini 2015-12-07 05:44:55

si vous avez un pool différent par utilisateur, assurez-vous que l'utilisateur et le groupe sont définis correctement dans le fichier de configuration. Vous pouvez trouver l'utilisateur nginx dans /etc/nginx/nginx.fichier conf. nginx groupe est le même que nginx utilisateur.

user = [pool-user]
group = [pool-group]
listen.owner = [nginx-user]
listen.group = [nginx-group]
0
répondu Jaman 2017-01-16 15:09:10

à ceux qui ont tout essayé dans ce fil et encore coincé: cela a résolu mon problème. J'ai mis à jour /usr/local/nginx/conf/nginx.conf

  1. Décommenter la ligne en disant: user

  2. faire www-data il devient donc: user www-data;

  3. de l'Enregistrer (accès root requis)

  4. redémarrer nginx

0
répondu Davy 2017-05-18 09:42:43

si vous avez des déclarations

pid = /exécuter/php-fpm.pid

et

listen = /exécuter/php-fpm.pid

dans différents fichiers de configuration, alors root sera propriétaire de ce fichier.

0
répondu IvanTheFirst 2017-10-31 09:04:48