web-dev-qa-db-fra.com

nginx + PHP-FPM = "permission refusée" erreur 13 dans le journal nginx; erreur de configuration?

J'ai nginx 0.7x + PHP-FPM fonctionnant sous PHP 5.2.10 sur un serveur RHEL5, mais j'essaye de dupliquer cette configuration sous PHP-FPM intégré dans PHP 5.3.3 sur un deuxième serveur, j'ai des problèmes avec les erreurs d'autorisation à chaque fois qu'il y a un GET.

FPM est démarré et a confirmé que fastcgi écoute sur 9000, mais chaque fois que je fais un GET, je vois cette erreur dans le journal nginx:

2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", Host: "dev.noisepages.com"

Barebones nginx.conf.default fonctionne, au moins. Voici mon nginx.conf

server {
        listen       80;
        server_name  dev.noisepages.com;
        root   /home/noisepages/www;
        index  index.html index.htm index.php;

        access_log  logs/dev.access.log;
 error_log logs/dev.error.log;

        location / {

 if (-f $request_filename) {
  expires 30d;
  break;
  }

 # this sends all non-existing file or directory requests to index.php
 rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1;
 if (!-e $request_filename) {
     rewrite ^.+?(/wp-.*) $1 last;
  rewrite ^.+?(/.*\.php)$ $1 last;
  rewrite ^ /index.php last;
  }
        }

        location ~ \.php$ {
            include        fastcgi_params;
            fastcgi_pass   unix:/dev/shm/php-fastcgi.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME    /home/dev/www/$fastcgi_script_name;
        }
    }

(Les directives de réécriture supplémentaires sont destinées à l'utilisation de WordPress multisite aka WordPress MU)

J'ai également vérifié que l'utilisateur www-data est déclaré non seulement dans nginx.conf mais aussi dans php-fpm.conf pour les valeurs d'utilisateur et de groupe.

Peut-être que je ne comprends pas ce qui cause le message d'erreur 13? Curieusement, j'avais essayé de configurer dev.noisepages.com sur le premier serveur en parallèle à quelques autres hôtes virtuels - chacun fonctionnant bien - et j'ai eu la même erreur.

20
Peter Kirn

Vous devez vous assurer que vous avez +x on all des répertoires du chemin menant à la racine du site - donc /home, /home/noisepages et /home/noisepages/www

57
bear

assurez-vous que/home/dev dispose des autorisations correctes

chmod +x /home/dev
6
Mike

J'ai eu un problème similaire qui m'a amené ici. Ma solution (basée sur la réponse choisie) était de faire un

chown -R root:www-data /home/noisepages/www
chmod g+w -R /home/noisepages/www

Maintenant ça marche bien :)

2
Scott Warren

J'ai également eu des problèmes avec les autorisations dans php-fpm, en particulier avec les sessions php. Il s'est avéré que je devais juste modifier l'utilisateur que php-fpm utilise pour exécuter les processus, car par défaut, il était défini sur "personne".

tutoriel à ce sujet ici: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/

2
Rob