Apache não exibe página de erro 500 personalizada para erros de php

3

O Apache não deseja exibir um documento de erro personalizado que eu configurei.

No meu vhost eu tenho

    DocumentRoot /var/www/site/public
    ...
    ErrorDocument 500 /500.html

O 500.html está localizado em /var/www/site/public/500.html

Para testar isso, acabei de criar uma página php quebrada que retorna um cabeçalho 500, mas a página está em branco. Eu suspeito que isso é resultado do php gerando a página 500 e não o apache. Então, como faço para que o php mostre meu documento de erro personalizado do apache?

    
por spetz 13.03.2015 / 16:31

1 resposta

2

Este é um comportamento normal, pois os erros do PHP não são considerados 5xx Server Errors. De acordo com RFC 7231

6.6. Server Error 5xx

The 5xx (Server Error) class of status code indicates that the server is aware that it has erred or is incapable of performing the requested method. - -

6.6.1. 500 Internal Server Error

The 500 (Internal Server Error) status code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.

Os erros do PHP devem ser sempre corrigidos, pois podem causar problemas de segurança. Pela mesma razão, a melhor prática ao lidar com erros de php é registrá-los para que os programadores os revisem e os escondam dos usuários. Esse tipo de configuração seria (no formato php.ini):

error_reporting = E_ALL
log_errors = On
display_errors = Off

Isso registrará erros no log de erros do servidor da web ou em outro log de erros configurado. Em vez de lê-los no site, você pode executar tail -f no arquivo de log durante o carregamento da página.

    
por 13.03.2015 / 19:45