Nginx no pasa uri a php5-fpm, sino que sirve como archivo de texto

Nginx no pasa uri a php5-fpm, sino que sirve como archivo de texto

Como se indicó anteriormente, la uri no se pasa a nginx. He incluido todo el bloque "probar" para mostrar esto.

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    set $page_to_view "/index.php";
    try_files $uri $uri.php $uri/;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

Básicamente, significa "oh, oye, hicimos $uri.php y ese archivo existe, vamos a servirlo en lugar de enviarlo a php".

y mi porción de fpm está debajo.

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
#   # With php5-fpm:
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

Bastante stock. Entonces, lo que no entiendo es por qué en el mundo nginx ya no lo hace. Sé que funcionaba con fastcgi en Debian, pero ahora no es así, y perdí mi antiguo archivo de configuración debido a una falla del disco duro y es el único archivo del que no hice una copia de seguridad antes de enviar la unidad de regreso como pensé que sería. Está perfectamente bien reescribirlo.

Respuesta1

No dices qué URI estás intentando cargar, pero asumiré que no termina en .php.

Su problema aquí es que no está tomando la try_filesdirectiva literalmente como su nombre lo indica. Se trata específicamente de probar unarchivo.Está documentado en try_files file ... uri;el sentido de que solo el último argumento será tratado como un recurso alternativo que provocará una reescritura interna. Cualquier argumento anterior al último se prueba como un archivo estático y, si se encuentra, se sirve como un archivo estático.

Esto significa que puedes hacer try_files $uri $uri/ $uri.php;pero no puedes hacer.try_files $uri $uri.php $uri/

Respuesta2

intenta reemplazar

location ~ \.php$ {

con

location ~ \.php {

y $document_root con el directorio real donde se coloca el archivo php

por ej.

fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;

información relacionada