Estoy tratando de configurar un servidor Ubuntu (12.04) recién instalado, pero no puedo ejecutar archivos PHP a través de php-fpm. No importa lo que haga, siempre obtengo un "Acceso denegado". página (texto sin formato, no html ni nada).
Paquetes instalados:
nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm
Detalles de configuración:
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; }
Dominio predeterminado / de prueba:
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 lo demás es predeterminado. Los registros de Nginx y php-fpm no muestran errores. Sin embargo, cuando cargo http://<server-ip>/index.php
, aparece la página "Acceso denegado".
Solución de problemas:
- El archivo index.html funciona bien. Por lo tanto, debe ser php-fpm o el enlace fastcgi entre Nginx y php-fpm.
- He establecido la propiedad (tanto del usuario como del grupo) de todo el
/extra
directoriowww-data
y la propiedad en 777, solo para asegurarme (lo atenuaré una vez que funcione, por supuesto). Así que ciertamente no es un problema de permisos - No es el problema security.limit_extensions lo que veo mucho: por defecto, eso está configurado en .php, que es exactamente lo que estoy solicitando. Lo configuré explícitamente
.php .html
con el mismo resultado.
Realmente me estoy cansando de esto, ya instalé esta configuración dos veces (aunque en máquinas OSX), y todo funcionó a la perfección. ¿Hay algo que estoy pasando por alto?
El contenido del registro:
El registro de errores de Nginx está vacío.
Registro de acceso de Nginx (ip eliminada):
<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 "-" "-"
registro de 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
establecido en 0 (configuración predeterminada) fue el problema.cgi.fix_pathinfo = 0
muchos tutoriales lo recomiendan porque ayuda a mitigar las vulnerabilidades, específicamente las vulnerabilidades que ejecutan código php a través de archivos arbitrarios. Entonces, si configura esto en 1, asegúrese de saber lo que está haciendo o especifique otras mitigaciones para compensarlo. Encontré que esta publicación tiene una buena explicación sobre el tema: nealpoole.com/blog/2011/04/…