NGINX no ejecuta archivos PHP

9

No pude encontrar una respuesta para esto. Instaló PHP5 + NGINX + PHP-FPM y no puede ejecutar archivos php, aparece un "¡Vaya! Este enlace parece estar roto". error en CROMO. No tengo ningún informe valioso de registro de errores, tengo un index.php en la raíz, intenté crear un archivo phpinfo.php personalizado, ni funcionó.

PUEDO cargar archivos HTML, pero no puedo PHP.

Aquí está la configuración de mi sitio local en NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Cambió la propiedad de todo el directorio a www-data: www-data, hizo un 777 en el archivo php, nada. Reiniciamos nginx, FPM, nada.

¿Ayuda? :(

Gabriel A. Zorrilla
fuente
mira en tu registro de errores
Mike
Ya lo hice, "No tengo ningún informe valioso de registro de errores". Esta completamente vacio.
Gabriel A. Zorrilla
Necesita más datos para diagnosticar el problema. Sugeriría comenzar agregando 'fastcgi_intercept_errors en;' a su configuración (si no está en fastcgi_params) para registrar cualquier error de FPM. También agregue 'debug' a su línea error_log para obtener muchos más detalles (también verifique el nginx error_log principal (posiblemente en / var / log)). Su directiva nombre_servidor parece inusual; no estoy seguro si la reemplazó para esta publicación o si es así. Como recomendación general, mueva su directiva raíz fuera de su bloque de ubicación. (Sugerencia final (poco probable): asegúrese de que su servidor predeterminado no esté sirviendo las páginas html que puede ver).
cyberx86

Respuestas:

9

aparece un "¡Vaya! Este enlace parece estar roto". error en CROMO.

Chrome muestra su propia página de error si la página de error es inferior a 512 bytes.

Sospecho que tienes la siguiente línea fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

y si es así, porque la rootdirectiva está definida en location /nunca se aplicará location ~ \.php$, por lo tanto, se SCRIPT_FILENAMEconvierte en URI.

Esto se puede resolver moviendo la rootdirectiva al servercontexto de nivel:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}
quanta
fuente
Bingo. Se movió el bloque del servidor como se sugirió y funcionó ¡Gracias!
Gabriel A. Zorrilla
@quanta: ¿El OP editó la configuración en su pregunta? Debido a que es una ruta codificada, debería funcionar perfectamente cuando la directiva raíz se define en el contexto de ubicación. El único caso en el que no funcionaría fue si definió SCRIPT_FILENAME en su archivo fastcgi_params usando $ document_root y, por lo tanto, anula su codificado.
Martin Fjordvald
@ MartininF: No, el OP no editó la configuración. Tienes razón. Editaré mi respuesta.
quanta
-3

En mi caso, faltaba el paquete php-zip. Para arreglar esto, corrí:

yum install -y php-zip
systemctl restart php-fpm nginx
wejdross
fuente
3
Aparentemente, la causa de la OP fue por algo completamente diferente.
Sven
Eso no significa que alguien que encuentre su camino a esta página con este problema tenga la misma causa que el OP, es muy posible que tenga la causa que hizo wejdross y encuentre útil esta respuesta. La pregunta no es específica para esa causa, es específica para ese síntoma, y ​​obviamente hay múltiples causas, por lo que las personas con diferentes causas podrían terminar aquí.
Synetech
-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;
James
fuente
44
¡Bienvenido a Server Fault! Parece que puede tener el conocimiento para proporcionar una buena respuesta aquí, pero considere leer ¿Cómo escribo una buena respuesta? en nuestro centro de ayuda y luego revise y amplíe su Respuesta. Sus Comandos / Código / Configuración pueden ser técnicamente la solución, pero alguna explicación es bienvenida. Gracias por adelantado.
HBruijn
44
Además: incluso si esa línea es lo que resuelve el problema, ¿a dónde va? El OP muestra dos locations. ¿La línea va en uno? ¿El otro? ¿Ambos? Edite su respuesta para completarla.
David Makogon