nginx mostrando páginas em branco do PHP

Eu configurei um servidor nginx com php5-fpm. Quando eu tento carregar o site, recebo uma página em branco sem erros. As páginas Html são atendidas, mas não php. Tentei ligar o display_errors no php.ini, mas sem sorte. php5-fpm.log não produz erros e nem é 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

Aqui está o meu registro de erro 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" 

Para referência, eu estou anexando meu bloco de location para capturar arquivos com a extensão .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; } 

Verifique /path/to/fastcgi-params o /path/to/fastcgi-params e verifique se ele está presente e legível pelo usuário nginx.

replace

 include fastcgi_params; 

com

 include fastcgi.conf; 

e remova fastcgi_param SCRIPT_FILENAME … em nginx.conf

Também teve esse problema e finalmente encontrou a solução aqui . Em suma, você precisa adicionar a seguinte linha ao seu arquivo de configuração do nugx fastcgi (/ etc / nginx / fastcgi_params no Ubuntu 12.04)

 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; 

Muitos usuários se enquadram neste tópico esperando encontrar uma solução para páginas em branco sendo exibidas enquanto usam nginx + php5-fpm , sendo uma delas. Este é um recapitulação do que acabei fazendo depois de ler muitas das respostas aqui mais minhas próprias investigações:

1) Abra /etc/php5/fpm/pool.d/www.conf e verifique o valor da location do parâmetro.

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

2) A location parâmetro deve corresponder fastcgi_pass parâmetro fastcgi_pass no seu arquivo nginx.conf .

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

3) Verifique se o arquivo realmente existe:

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

4) Se não existir, significa que php5-fpm não está sendo executado, então você precisa reiniciá-lo:

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

No que diz respeito à seção de location :

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

Verifique o arquivo que fastcgi_params existe na localização /etc/nginx/ :

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

Geralmente este arquivo contém uma lista de definições de variables ​​requeridas por php5-fpm:

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

O nginx inclui dois arquivos de parâmetros possíveis: fastcgi_params e fastcgi.conf . A diferença entre ambos é a definição de variável SCRIPT_FILENAME :

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

Para fazer uma longa história curta, fastcgi.conf deve sempre funcionar. Se por algum motivo você estiver usando fastcgi_params , você deve 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; } 

Agora recarregue a configuração nginx:

 $ sudo nginx -s reload 

E verifique se um arquivo php é exibido corretamente. Por exemplo:

/var/www/html/test.php

 

Onde /var/www/html é o caminho para a raiz do documento.

Certifique-se de ter obtido isso em / etc / nginx / fastcgi_params

fastcgi_param SCRIPT_FILENAME $ request_filename;

Quem sabe por que isso já não existe? A quantidade de tempo que isso deve coletivamente desperdiçar!

Eu escrevi um programa C curto que retorna as variables ​​de ambiente passadas de nginx para o aplicativo fastCGI.

 #include  #include  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" "FastCGI Call Debug Tool\n" "

FastCGI Call Debugging Tool

\n" "

Request number %d running on host %s

\n" "

Environment Variables

\n", ++count, getenv("SERVER_NAME")); i = 0; envvar = environ[i]; while (envvar != NULL) { printf("%s
",envvar); envvar = environ[++i]; } printf("

\n"); } return 0; }

Salve isso em um arquivo, por exemplo, fcgi_debug.c

Para compilá-lo, primeiro instale gcc e libfcgi-dev , então execute:

 gcc -o fcgi_debug fcgi_debug.c -lfcgi 

Para executá-lo, instale spawn-fcgi , então execute:

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

Em seguida, altere a configuração nginx fcgi para apontar para o programa de debugging:

 fastcgi_pass 127.0.0.1:3000; 

Reinicie o nginx, atualize a página, e você deve ver todos os parâmetros que aparecem no seu navegador para que você possa depurar! 🙂

Essas sugestões me ajudaram com a instalação do Ubuntu 14.04 LTS,

Além disso, eu precisava ativar o short_open_tag em /etc/php5/fpm/php.ini

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

Adicione isso em /etc/nginx/conf.d/default.conf :

 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; 

No caso de alguém estar tendo esse problema, mas nenhuma das respostas acima resolve seus problemas, eu estava tendo o mesmo problema e tive o tempo mais difícil de rastreá-lo desde meus arquivos de configuração estavam corretos, meus trabalhos de ngnix e php-fpm estavam funcionando bem e não houve erros em todos os registros de erros.

Erro errado, mas nunca verifiquei a variável Short Open Tag no meu arquivo php.ini que foi configurado para short_open_tag = Off . Como meus arquivos php estavam usando Em vez de , as páginas estavam aparecendo em branco. Short Open Tag deve ter sido definido como On no meu caso.

Espero que isso ajude alguém.

A razão pela qual este problema ocorre é porque as configurações fastcgi no nginx não funcionam conforme necessário, no local ou no processamento, eles respondem como dados html. Há duas maneiras possíveis nas quais você pode configurar seu nginx para evitar esse 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 os methods funcionariam adequadamente, você pode seguir em frente e pegar qualquer um deles. Eles quase executam as mesmas operações com pouca diferença.

Nenhuma das respostas acima funcionou para mim – o PHP estava rastreando tudo, exceto páginas que dependiam do mysqli, para o qual estava enviando uma página em branco com um código de resposta 200 e não lançando erros. Enquanto estou no OS X, a correção foi simplesmente

sudo port install php56-mysql

seguido de um reinício do PHP-FPM e do nginx.

Eu estava migrando de uma instalação anterior do Apache / PHP para o nginx e não percebi a incompatibilidade da versão no driver para php-mysql e php-fpm .

Eu tive um problema semelhante, o nginx estava processando uma página a meio caminho e depois parando. Nenhuma das soluções sugeridas aqui estava funcionando para mim. Eu reparei isso alterando nginx fastcgi buffering:

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

Após as mudanças, meu bloco de location parecia:

 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 detalhes, consulte https://www.namhuy.net/3120/fix-nginx-upstream-response-buffered-temporary-file-error.html

Se você conseguir uma canvas em branco, isso pode ser por causa de 2 razões:

  1. O navegador que bloqueia os frameworks é exibido. Em alguns navegadores, os frameworks são considerados inseguros. Para superar isso, você pode lançar a versão frameless de phpPgAdmin por

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

  2. Você ativou um recurso de segurança no Nginx para X-Frame-Options, tente desativá-lo.

Isso resolve o meu 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; }