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.
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
assurez-vous que/home/dev dispose des autorisations correctes
chmod +x /home/dev
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 :)
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/