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.

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


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

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/


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 :)


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.