nginx + PHP-FPM = error 13 “permiso denegado” en el registro nginx; error de configuración?

20

Tengo nginx 0.7x + PHP-FPM ejecutándose bajo PHP 5.2.10 en un servidor RHEL5, pero tratando de duplicar esa configuración bajo el paquete PHP-FPM incluido en PHP 5.3.3 en un segundo servidor, estoy teniendo algunos problemas con los errores de permisos cada vez que hay un GET.

Se inicia FPM y se confirma que fastcgi está escuchando en 9000, pero cada vez que hago un GET, veo este error en el registro 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 funciona, al menos. Aquí está mi 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;
        }
    }

(Las directivas adicionales de reescritura son para el uso de WordPress multisite, también conocido como WordPress MU)

También he verificado que el usuario www-data se declara no solo en nginx.conf sino también en php-fpm.conf para los valores de usuario y grupo.

¿Quizás no entiendo qué causa el mensaje de error 13? Por extraño que parezca, intenté configurar dev.noisepages.com en el primer servidor en paralelo con un par de otros hosts virtuales, cada uno de los cuales funcionaba bien, y obtuve el mismo error.

Peter Kirn
fuente

Respuestas:

57

Es necesario asegurarse de que tiene +xsobre todo de los directorios en la ruta que conduce a la raíz del sitio - así /home, /home/noisepagesy/home/noisepages/www

oso
fuente
2
Sí, de hecho, www tenía los permisos correctos, ¡pero no toda la ruta! ¡Gracias! Tiene sentido: un error tonto de mi parte.
Peter Kirn
1
Si pudiera darte otros 10 votos a favor, lo haría.
Tim
¡Eres genial! ¡Paso 2 horas en google para encontrar tu respuesta! ¡Gracias!
Serhii Polishchuk
¡Muchas gracias! Estaba jugando con un servidor de producción y me ahogué en sudor frío cuando esto sucedió ...!
Lephleg
5

asegúrese de que / home / dev tenga los permisos correctos

chmod +x /home/dev
Micro
fuente
2

También tuve problemas con los permisos en php-fpm, en particular con las sesiones de php. Resultó que solo tenía que modificar el usuario que php-fpm usa para ejecutar procesos, ya que por defecto estaba configurado como "nadie".

tutorial sobre esto aquí: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/

Robar
fuente
3
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Scott Pack
3
El enlace está muerto ...
Christoph Bühler
1

Tuve un problema similar que me trajo aquí. Mi solución (basada en la respuesta elegida) fue hacer un

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

Ahora funciona bien :)

Scott Warren
fuente
Pero, ¿cómo puedes hacerlo si usas usuarios de Chroot? Cuando se usan usuarios con chroot, la carpeta / home / user / www debe ser propiedad del usuario y no funciona.
Vincent LITUR
Lo siento, no sé :(
Scott Warren