Um 500 Internal Server Error é a falha mais genérica que um servidor pode retornar. Significa: "tentei processar sua requisição, algo deu errado e não posso dizer o quê". É um código 5xx (problema do servidor) e a info útil nunca está na página. Está nos logs.

O que 500 realmente significa

O 500 é o curinga ao qual o servidor recorre quando bate num erro que não previu e não tem um código mais específico. Diferente de um 404 ou 403, ele não diz quase nada de propósito, expor o erro real aos visitantes seria um risco de segurança. A página é vaga, mas a causa é concreta e está esperando nos seus logs.

Causas comuns

CausaO que acontece
Exceção não tratadaO código lançou um erro que ninguém capturou
Deploy ruimUm release recente introduziu um bug
Config / .htaccessRegra de servidor ou rewrite malformada
PermissõesDono ou modo de arquivo errado
Falha de bancoA app não conecta ou consulta
Sem memóriaO processo morreu no meio da requisição

Como corrigir, como desenvolvedor

  1. Leia os logs do servidor. Está tudo lá, o stack trace nomeia arquivo e linha.
  2. Revise seu último deploy. Se começou após um release, é o suspeito; rollback para confirmar.
  3. Verifique config e permissões (.htaccess, modo 755/644).
  4. Teste a conexão com o banco.
  5. Cheque memória (OOM sob carga).

Pegue os 500 assim que começam

Um 500 solto é ruído; um spike é um incidente. A diferença entre uma queda de 10 minutos e uma de 3 horas é a rapidez com que você descobre. Configure um alerta sobre a taxa de 5xx por endpoint (no seu APM, nos seus logs ou em um check externo de uptime) para saber assim que os 500 sobem.

Códigos HTTP relacionados