Estou tentando configurar um servidor Ubuntu (12.04) recém-instalado, mas não consigo obter arquivos PHP rodando o 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 de 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 padrão / teste:
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();
Tudo o resto é padrão. Os logs Nginx e php-fpm não mostram erros. No entanto, quando carrego http://<server-ip>/index.php
, recebo 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.
- Eu configurei a propriedade (usuário e grupo) de todo o
/extra
diretório comowww-data
e propriedade como 777, apenas para ter certeza. Portanto, certamente não é um problema de permissões - Não é o problema security.limit_extensions que eu vejo muito: por padrão, é definido como .php, que é exatamente o que estou solicitando. Eu defini explicitamente para
.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. Há algo que eu estou 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 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
chown
problema.cgi.fix_pathinfo
definido como 0 (configuração padrão) foi o problema.cgi.fix_pathinfo = 0
é recomendado por muitos tutoriais porque ajuda a mitigar vulnerabilidades, especificamente vulnerabilidades executando código php através de arquivos arbitrários. Portanto, se você definir isso como 1, verifique se você sabe o que está fazendo ou especifique outras atenuações para compensar isso. Encontrei este post com uma boa explicação sobre o assunto: nealpoole.com/blog/2011/04/…