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!
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.
php-fpm
exibe tudo em /var/log/php5-fpm.log
ou similar.
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.
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.
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.
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.
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