Erro Nginx / PHP-FPM "Acesso negado".

13

Estou tentando configurar um servidor Ubuntu (12.04) recém-instalado, mas não consigo executar arquivos PHP através do php-fpm. Não importa o que eu faça, sempre recebo um "Acesso negado". página (texto simples, não html ou qualquer coisa).

Pacotes instalados:

nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm

Detalhes da configuração:

PHP-FPM:

user = www-data
group = www-data
listen = /var/run/php5-fpm.sock

Nginx:

user www-data;
worker_processes 3;
events { worker_connections 1024; }

Domínio de teste / padrão:

server {
    listen       80;
    server_name  localhost;
    root         /extra/htdocs/default;
    index        index.html index.php

    access_log   /extra/logs/default/access.log;
    error_log    /extra/logs/default/error.log;

    location / {
        try_files  $uri $uri/ /index.html;
    }

    location ~ \.php
    {
        fastcgi_split_path_info  ^(.+\.php)(/.+)$;

        include fastcgi_params;

        fastcgi_index   index.php;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   PATH_INFO         $fastcgi_path_info;
        fastcgi_param   PATH_TRANSLATED   $document_root$fastcgi_path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }
}

/extra/htdocs/default/index.php:

<?php
phpinfo();

Todo o resto é o padrão. Os logs do Nginx e do php-fpm não mostram erros. No entanto, quando carrego http://<server-ip>/index.php , obtenho a página "Acesso negado".

Solução de problemas:

  • O arquivo index.html funciona bem. Portanto, deve ser php-fpm ou a ligação fastcgi entre Nginx e php-fpm.
  • Defina a propriedade (usuário e grupo) de todo o diretório /extra como www-data e a posse como 777, só para ter certeza (vou diminuí-lo quando funcionar, é claro). Então, certamente não é um problema de permissões
  • Não é a questão security.limit_extensions que vejo muito: por padrão que é definido como .php, que é exatamente o que estou solicitando. Eu defini explicitamente como .php .html , com o mesmo resultado.

Estou realmente cansado disso, já instalei essa configuração duas vezes (embora em máquinas OSX) e tudo funcionou perfeitamente. Existe algo que eu esteja negligenciando?

O conteúdo do log:

O log de erros do Nginx está vazio.

Log de acesso ao Nginx (ip removido):

<ip> - - [17/Jul/2012:11:21:25 +0200] "GET /favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:28 +0200] "GET /index.php HTTP/1.1" 403 46 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:34 +0200] "-" 400 0 "-" "-"

log do php-fpm:

[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections
    
por Peter Kruithof 17.07.2012 / 12:49

1 resposta

31

Finalmente consertado.

O culpado foi esta linha na minha configuração:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

Se eu comentei esta linha, tudo funcionou bem. No entanto, eu vi isso em quase todos os posts que li sobre as configurações do Nginx, então isso me incomodou. Ao olhar para as minhas configurações pela milionésima vez, vi que cgi.fix_pathinfo (em php.ini ) foi definido como 0, onde deveria ter sido 1. O valor padrão que o PHP usa também é 1, então eu devo ter mudado isso minhas horas de depuração, porque lembro de ler sobre esse valor e achei que estava correto.

De qualquer forma, talvez ajude qualquer pessoa pesquisando sobre esse problema.

    
por Peter Kruithof 17.07.2012 / 16:46

Tags