nginx php

php fpm pool nginx



nginx que muestra páginas PHP en blanco (14)

Agregue esto en /etc/nginx/conf.d/default.conf :

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;

Configuré un servidor nginx con php5-fpm. Cuando intento cargar el sitio, aparece una página en blanco sin errores. Las páginas HTML se publican bien, pero no php. Intenté encender display_errors en php.ini pero no tuve suerte. php5-fpm.log no está produciendo ningún error y tampoco es nginx.

nginx.conf

server { listen 80; root /home/mike/www/606club; index index.php index.html; server_name mikeglaz.com www.mikeglaz.com; error_log /var/log/nginx/error.log; location ~ /.php$ { #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }

EDITAR

aquí está mi registro de error nginx:

2013/03/15 03:52:55 [error] 1020#0: *55 open() "/home/mike/www/606club/robots.txt" failed (2: No such file or directory), client: 199.30.20.40, server: mikeglaz.com, request: "GET /robots.txt HTTP/1.1", host: "mikeglaz.com"


Asegúrate de tener esto en / etc / nginx / fastcgi_params

fastcgi_param SCRIPT_FILENAME $ request_filename;

¿Quién sabe por qué esto ya no está allí? ¡La cantidad de tiempo que esto debe desperdiciarse colectivamente!


Como referencia, adjunto mi bloque de location para capturar archivos con la extensión .php :

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

Vuelva a verificar /path/to/fastcgi-params , y asegúrese de que esté presente y legible por el usuario nginx.


En caso de que alguien tenga este problema pero ninguna de las respuestas anteriores resuelva sus problemas, tuve este problema y me costó localizarlo porque mis archivos de configuración eran correctos, mis trabajos ngnix y php-fpm funcionaban correctamente, y no hubo errores en ningún registro de errores.

Error tonto, pero nunca revisé la variable Short Open Tag en mi archivo php.ini que se configuró en short_open_tag = Off . Dado que mis archivos php estaban usando <? en lugar de <?php , las páginas aparecían en blanco. Short Open Tag debería haberse configurado en On en mi caso.

Espero que esto ayude a alguien.


Escribí un programa corto en C que devuelve las variables de entorno pasadas de nginx a la aplicación fastCGI.

#include <stdlib.h> #include <fcgi_stdio.h> extern char **environ; int main(int argc, char **argv) { char *envvar; int i; int count = 0; while(FCGI_Accept() >= 0) { printf("Content-type: text/html/n/n" "<html><head><title>FastCGI Call Debug Tool</title></head>/n" "<body><h1>FastCGI Call Debugging Tool</h1>/n" "<p>Request number %d running on host <i>%s</i></p>/n" "<h2>Environment Variables</h2><p>/n", ++count, getenv("SERVER_NAME")); i = 0; envvar = environ[i]; while (envvar != NULL) { printf("%s<br/>",envvar); envvar = environ[++i]; } printf("</p></body></html>/n"); } return 0; }

Guarde esto en un archivo, por ejemplo, fcgi_debug.c

Para compilarlo, primero instala gcc y libfcgi-dev , luego ejecuta:

gcc -o fcgi_debug fcgi_debug.c -lfcgi

Para ejecutarlo, instale spawn-fcgi , luego ejecute:

spawn-fcgi -p 3000 -f /path/to/fcgi_debug

Luego, cambie la configuración de nginx fcgi para que apunte al programa de depuración:

fastcgi_pass 127.0.0.1:3000;

Reinicie nginx, actualice la página y verá todos los parámetros en su navegador para que pueda depurarlos. :-)


Estas sugerencias me ayudaron con mi instalación Ubuntu 14.04 LTS,

Además, necesitaba activar el short_open_tag en short_open_tag

$ sudo kate /etc/php5/fpm/php.ini short_open_tag = On $ sudo service php5-fpm restart $ sudo service nginx reload


Esto se solucionó mi problema

location ~ /.php$ { fastcgi_split_path_info ^(.+/.php)(/.+)$; include snippets/fastcgi-php.conf; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; }


La razón por la que ocurre este problema es porque las configuraciones de fastcgi en nginx no funcionan como se requiere y están en su lugar o procesando, responden como datos html. Hay dos formas posibles en que puede configurar su nginx para evitar este problema.

  1. Método 1:

    location ~ /.php$ { fastcgi_split_path_info ^(.+/.php)(/.+)$; # With php5-fpm: fastcgi_pass unix:/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi.conf; }

  2. Método 2:

    location ~ /.php$ { fastcgi_split_path_info ^(.+/.php)(/.+)$; include snippets/fastcgi-php.conf; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; }

Ambos métodos funcionarían correctamente, puedes seguir y tomar uno de ellos. Casi realizan las mismas operaciones con muy poca diferencia.


Muchos usuarios caen en este hilo esperando encontrar una solución para las páginas en blanco que se muestran al usar nginx + php5-fpm , siendo yo uno de ellos. Este es un resumen de lo que terminé haciendo después de leer muchas de las respuestas aquí más mis propias investigaciones:

1) Abra /etc/php5/fpm/pool.d/www.conf y verifique el valor de la location del parámetro.

location = /var/run/php5-fpm.sock

2) La location parámetro debe coincidir fastcgi_pass parámetro fastcgi_pass en su archivo nginx.conf .

fastcgi_pass unix:/var/run/php5-fpm.sock;

3) Verifique que el archivo realmente exista:

$ file /var/run/php5-fpm.sock /var/run/php5-fpm.sock: socket

4) Si no existe, significa que php5-fpm no se está ejecutando, por lo que debe reiniciarlo:

$ sudo /etc/init.d/php5-fpm restart [ ok ] Restarting php5-fpm (via systemctl): php5-fpm.service.


Con respecto a la sección de location :

location ~ /.php$ { include fastcgi_params; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; }

Comprueba que el archivo fastcgi_params existe en la ubicación /etc/nginx/ :

$ file /etc/nginx/fastcgi_params /etc/nginx/fastcgi_params: ASCII text

En general, este archivo contiene una lista de definiciones de variables requeridas por php5-fpm:

fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; ... fastcgi_param REDIRECT_STATUS 200;

nginx incluye dos posibles archivos de parámetros: fastcgi_params y fastcgi.conf . La diferencia entre ambos es la definición de la variable SCRIPT_FILENAME :

$ diff fastcgi_params fastcgi.conf 1a2 > fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Para abreviar, fastcgi.conf siempre debería funcionar. Si por algún motivo está utilizando fastcgi_params , debe definir SCRIPT_FILENAME :

location ~ /.php$ { include fastcgi_params; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }

Ahora recarga la configuración de nginx:

$ sudo nginx -s reload

Y compruebe que un archivo php se muestra correctamente. Por ejemplo:

/var/www/html/test.php

<pre><?php var_export($_SERVER)?></pre>

Donde /var/www/html es la ruta a la raíz del documento.


Ninguna de las respuestas anteriores funcionó para mí: PHP estaba procesando todo, excepto las páginas que dependían de mysqli, para lo cual enviaba una página en blanco con un código de respuesta de 200 y no arrojaba ningún error. Como estoy en OS X, la solución fue simplemente

sudo port install php56-mysql

seguido de un reinicio de PHP-FPM y nginx.

Estaba migrando de una configuración anterior de Apache / PHP a nginx, y no me di cuenta de que la versión no coincide en el controlador para php-mysql y php-fpm .


Si obtiene una pantalla en blanco, puede deberse a 2 razones:

  1. Navegador que bloquea los marcos para que no se muestren. En algunos navegadores, los marcos se consideran inseguros. Para superar esto, puede iniciar la versión sin marco de phpPgAdmin por

    http://-your-domain-name-/intro.php

  2. Ha habilitado una característica de seguridad en Nginx para X-Frame-Options intente deshabilitarla.


También tuve este problema y finalmente encontré la solución here . En resumen, debe agregar la siguiente línea a su archivo de configuración de nginx fastcgi (/ etc / nginx / fastcgi_params en Ubuntu 12.04)

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;


Tuve un problema similar, nginx procesaba una página a la mitad y luego se detenía. Ninguna de las soluciones sugeridas aquí funcionaba para mí. Lo arreglé cambiando el almacenamiento en memoria intermedia de nginx fastcgi:

fastcgi_max_temp_file_size 0; fastcgi_buffer_size 4K; fastcgi_buffers 64 4k;

Después de los cambios, mi bloque de location se veía así:

location ~ /.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_max_temp_file_size 0; fastcgi_buffer_size 4K; fastcgi_buffers 64 4k; include fastcgi_params; }

Para más detalles, consulte https://www.namhuy.net/3120/fix-nginx-upstream-response-buffered-temporary-file-error.html


reemplazar

include fastcgi_params;

con

include fastcgi.conf;

y elimine fastcgi_param SCRIPT_FILENAME ... en nginx.conf