nginx + PHP-FPM = erro "permissão negada" 13 no log do nginx; erro de configuração?

20

Eu tenho o nginx 0.7x + PHP-FPM em execução no PHP 5.2.10 em um servidor RHEL5, mas tentando duplicar essa configuração no PHP-FPM integrado no PHP 5.3.3 em um segundo servidor, estou tendo alguns problemas com erros de permissão sempre que houver um GET.

O FPM foi iniciado e confirmou que o fastcgi está ouvindo no 9000, mas cada vez que faço um GET, vejo esse erro no log do 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, pelo menos. Aqui está o meu 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;
        }
    }

(As diretivas extras de reescrita são para o uso de vários sites do WordPress, também conhecido como WordPress MU)

Também verifiquei que o usuário www-data é declarado não apenas no nginx.conf, mas também no php-fpm.conf para valores de usuário e grupo.

Talvez eu não esteja entendendo o que causa a mensagem de erro 13? Curiosamente, tentei configurar o dev.noisepages.com no primeiro servidor paralelamente a alguns outros hosts virtuais - cada um dos quais estava funcionando bem - e obtive o mesmo erro.

Peter Kirn
fonte

Respostas:

57

Você precisa garantir que você tenha +xem todos os diretórios no caminho que conduz à raiz do site - assim /home, /home/noisepagese/home/noisepages/www

Urso
fonte
2
Sim, de fato, o www tinha as permissões corretas, mas não o caminho inteiro! Obrigado! Faz sentido - erro estúpido da minha parte.
Peter Kirn
11
Se eu pudesse lhe dar mais 10 votos positivos, eu daria.
Tim
Você é muito legal! Passo 2 horas no google para encontrar sua resposta! Obrigado!
Serhii Polishchuk
Muito obrigado! Eu estava mexendo em um servidor de produção e fiquei suando frio quando isso aconteceu ...!
Lephleg
5

verifique se / home / dev tem permissões corretas

chmod +x /home/dev
Mike
fonte
2

Eu também tive problemas com permissões no php-fpm, principalmente nas sessões de php. Acontece que eu apenas tive que modificar o usuário que o php-fpm usa para executar processos, pois, por padrão, ele foi definido como "ninguém".

tutorial aqui: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/

Roubar
fonte
3
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Scott pacote de
3
O link está morto ..
Christoph Bühler
1

Eu tive um problema semelhante que me trouxe aqui. Minha solução (com base na resposta escolhida) foi fazer um

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

Agora funciona bem :)

Scott Warren
fonte
Mas como você pode fazer isso se você usa usuários do Chroot? Ao usar usuários com chroot, a pasta / home / user / www deve pertencer ao usuário e não funciona.
Vincent LITUR
Desculpe, eu não sei :(
Scott Warren