329 votes

nginx erreur se connecter à php5-fpm.chaussette a échoué (13: Permission denied)

- Je mettre à jour nginx pour 1.4.7 et php 5.5.12, Après que j'ai eu l' erreur 502. Avant de me mettre à jour tout fonctionne bien.

nginx-erreur.journal

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;
        }

670voto

Xander Points 3118

J'ai eu ce genre d'erreur après la mise à jour de php. PHP correction d'un bug de sécuritéo a rw autorisation pour le fichier de socket.

  1. Ouvrez /etc/php5/fpm/pool.d/www.conf
  2. Supprimez les marques de toutes les autorisations lignes, comme:

    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
    
  3. Redémarrez fpm - sudo service php5-fpm restart

Remarque: si votre serveur web s'exécute en tant qu'utilisateur autre que www-data, vous aurez besoin de mettre à jour l' www.conf le fichier en conséquence

114voto

artooro Points 442

Tous les correctifs qui sont actuellement mentionnés ici essentiellement de permettre le trou de sécurité une fois de plus.

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

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

Assurez-vous que www-data est en fait l'utilisateur de la nginx travailleur est en cours d'exécution. Pour debian c'est www-data par défaut.

Cette façon de faire ne permet pas de problème de sécurité que ce changement devait résoudre.

48voto

Eric C Points 678

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

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

L'échantillon 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: Par @Chris Burgess, j'ai changé cela à la méthode plus sécurisée.

J'ai supprimé le commentaire pour l'écouter.mode, .groupe et .propriétaire:

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

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

Note de côté:

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

41voto

phalconeer Points 31

Si vous avez tout essayé dans ce post, mais n'ayant pas obtenu de PHP, c'est ce qu'il fixe pour mon cas:

Assurez-vous que vous avez ces lignes décommenté 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 ont disparu de mon /etc/nginx/fastcgi_params, assurez-vous qu'ils sont là!

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

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

31voto

CRHenkie Points 71

En effet, "à écouter.mode" doit être: "0660" et non pas "0666", comme d'Autres en Écriture ou d'Autres Lisible n'est jamais un bon choix ici.

Donc, essayez de trouver quel utilisateur/groupe de votre serveur web s'exécute. J'utilise CentOs et il s'exécute en tant qu'utilisateur "nginx" Ajoutez donc à votre php-fpm.conf:

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

enfin redémarrer php-fpm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X