Sé que esta es una pregunta popular, pero no he encontrado a nadie con mi problema similar. Puedo servir archivos PHP siempre que la extensión .php no esté en la url. Por ejemplo:
Si voy a localhost
me sirve mi archivo index.php. Si voy a localhost/index.php
descargar el archivo. Aquí está mi configuración:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
# proxy_pass http://127.0.0.1:8080;
#}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
Estoy bastante confundido con este tema y me pregunto si alguien tiene experiencia en el asunto.
php.ini
?Respuestas:
Si esto a veces funciona (para que sepa que PHP-FPM está funcionando), estaría bastante seguro de que esto es un problema de nginx. Sospecho de un par de reglas en su bloque de ubicación PHP. Ellos podrían estar infringiendo en ciertas direcciones URL causando nginx a volcar.
Solo necesita 2 líneas para capturar índices de directorio:
Regrese esa ubicación a eso, vuelva a cargar nginx y vea qué sucede.
Si necesita reescribir (URL bonitas en Wordpress, etc.) desea agregar algo como esto
Pero solo haga eso una vez que tenga las URL estándar funcionando.
fuente
Sin embargo, tuve el mismo problema, también necesitaba esta línea
también tenía
y tuve que asegurarme de que fuera después de la ubicación
~ \.php$ {..}
fuente
include fastcgi.conf;
es casi lo mismoinclude fastcgi_params;
pero también incluyefastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
algunos usuarios que incluyen eninclude fastcgi_params;
lugar de.conf
incluir manualmente en la configuración de sus sitios.