Nginx não está registrando erros PHP

5

Ao acessar alguns scripts PHP no meu site, estou recebendo a mensagem de erro 500 temida. Eu gostaria de saber o que está errado para consertá-lo, mas o Nginx não está registrando nenhum erro do PHP no arquivo de log que eu especifiquei. Este é o meu bloco de servidores:

server {
    listen 80;
    server_name localhost;
    access_log /home/whitey/sites/localhost/logs/access.log;
    error_log /home/whitey/sites/localhost/logs/error.log error;
    root /home/whitey/sites/localhost/htdocs;
    index index.html index.php /index.php;

    location / { 

    }

    location ~ \.php$ {
        fastcgi_pass unix:/tmp/phpfpm.sock;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires max;
    }
}

Note que alguns scripts PHP funcionam bem e outros não. Portanto, não há um problema global com o PHP, há apenas algo nestes scripts que está causando Nginx para lançar o erro 500.

Como posso chegar ao fundo disso? A única coisa em error.log é um erro sobre favicon.ico não ser encontrado.

    
por James Linton 13.08.2012 / 20:30

7 respostas

7

Você precisa adicionar o seguinte às configurações do pool do php-fpm:

catch_workers_output = 1

Você precisa adicionar esta linha a cada pool definido!

    
por 21.08.2012 / 01:21
2

php-fpm exibe tudo em /var/log/php5-fpm.log ou similar.

    
por 13.08.2012 / 20:37
1

Eu tive um problema semelhante.

Eu tentei implantar o phpMyAdmin com o php-fpm 7.0 e o nginx no CentOS7. O Nginx me mostrou 500.html, mas não houve erros em nenhum arquivo de log. Eu fiz tudo isso

catch_workers_output = 1

e

display_errors = On

O log nginx ou php-fpm não continha nenhuma string de erro.

E quando eu comentei esta linha no nginx.conf, pude ver na página do navegador coisas que estavam erradas.

#    error_page 500 502 503 504 /50x.html;
#    location = /50x.html {
#    }

Foi isso que me ajudou a entender os problemas.

    
por 13.07.2017 / 14:20
0

Procure no seu nginx.conf por uma definição error_log . Talvez o nginx escreva algo neste log de erros.

Você também pode ativar o registro em log no PHP.

    
por 13.08.2012 / 20:36
0

Para mim, isso parecia ser um problema com o upstart, que estava roteando os logs do php-fpm para seu próprio local personalizado, por exemplo:

/var/log/upstart/php5-fpm.log

Há também algumas falhas no ubuntu Precise, 12.04, que podem contribuir para a falta de capacidade de registro: link Se você ainda estiver executando essa versão.

    
por 21.07.2015 / 18:55
0

Quando o PHP display_errors está desativado, os erros do PHP podem retornar o erro Nginx 500.

Você deve dar uma olhada nos seus logs do php-fpm, com certeza você encontrará o erro lá. Com o CentOS 7:

tail -f /var/log/php-fpm/www-error.log

Você também pode mostrar erros do PHP. Em seu php.ini, mude:

display_errors = Off

para:

display_errors = On

Espero que ajude.

    
por 22.01.2016 / 01:34
-2

Foi o que aconteceu comigo:

Quando excluí meu log de erros, o nginx percebeu que não estava mais em falta. Quando eu recriou este arquivo, o nginx não reconheceria mais que existia, portanto, não gravaria no arquivo.

Para corrigir isso, execute estes comandos (estou no Ubuntu 14.04 LTS):

sudo service nginx reload

Se isso não funcionar, tente:

sudo service nginx restart
    
por 12.08.2015 / 09:22