Blog

Erro 500: quando o servidor falha e não diz porquê

JoaoDG 3 min de leitura

"Internal Server Error", ou erro 500, é das mensagens mais frustrantes que um site pode mostrar. Ao contrário do 404, que diz claramente que a página não existe, o 500 é vago de propósito: o servidor sabe que algo correu mal, mas não conta o quê a quem está a visitar. É uma regra de segurança, porque os detalhes de um erro podem ajudar um atacante.

O que significa

O pedido chegou ao servidor, o servidor tentou responder e, a meio do caminho, aconteceu algo que não estava previsto. Pode ser uma linha de código com um erro, uma configuração inválida, falta de memória ou uma base de dados que não respondeu como devia. O resultado é sempre o mesmo para quem visita: uma página em branco ou uma mensagem genérica.

As causas mais frequentes

  • Uma atualização que correu mal. Um plugin, um tema ou a própria aplicação foi atualizado e deixou de ser compatível com outra peça.

  • Um erro de código. Uma alteração feita à pressa, sem ser testada, com um erro que só aparece em produção.

  • Configuração do servidor inválida. Um ficheiro de configuração com um erro de escrita, como o .htaccess em servidores Apache, basta para deitar o site abaixo.

  • Falta de recursos. O processo que gera a página precisa de mais memória ou tempo do que o servidor permite, e é interrompido.

  • Permissões de ficheiros erradas. O servidor não consegue ler ou executar um ficheiro de que precisa.

  • Versão da linguagem incompatível. O alojamento atualizou, por exemplo, a versão do PHP, e partes antigas do site deixaram de funcionar.

O primeiro passo: os registos de erros

A mensagem que o visitante vê é genérica, mas o servidor guarda o detalhe. Os registos de erros (error logs) dizem exatamente qual o ficheiro, qual a linha e qual o problema. Sem os ler, resolver um erro 500 é adivinhar.

No alojamento partilhado, costumam estar no painel de controlo. Num servidor próprio, estão nos ficheiros de registo do servidor web e da aplicação. Quem gere o site deve saber onde estão e conseguir lá chegar em minutos.

O que fazer, por ordem

  1. Pensar no que mudou. O erro apareceu depois de uma atualização, de uma alteração ou de uma instalação? Na grande maioria dos casos, a causa é a última coisa que mudou.

  2. Ler o registo de erros no momento em que o erro acontece.

  3. Desfazer a última alteração. Se foi um plugin, desativá-lo. Se foi uma alteração de código, reverter. Se foi uma atualização, voltar à versão anterior a partir de uma cópia de segurança.

  4. Verificar os recursos: espaço em disco, memória disponível e limites da linguagem.

  5. Confirmar que o erro desapareceu em várias páginas, não só na inicial.

No WordPress

Num site WordPress, as causas mais comuns são um plugin em conflito, um tema incompatível ou o limite de memória do PHP. Desativar os plugins todos e voltar a ativá-los um a um mostra qual o culpado. Se não consegues entrar no painel, isso faz-se renomeando a pasta dos plugins por FTP ou pelo gestor de ficheiros do alojamento.

O que não fazer

  • Não ligar a apresentação de erros no site público. Ajuda a diagnosticar, mas mostra a qualquer visitante caminhos de ficheiros e detalhes internos. Os erros vêem-se nos registos, não na página.

  • Não fazer várias alterações ao mesmo tempo. Se mudas cinco coisas e o erro desaparece, não sabes qual delas resolveu, nem se alguma das outras criou um problema novo.

  • Não ignorar erros 500 intermitentes. Um erro que aparece de vez em quando costuma ser falta de recursos ou um problema que vai piorar.

Como prevenir

  • Testar as atualizações num ambiente de testes antes de as aplicar ao site público.

  • Ter cópias de segurança recentes e saber repô-las.

  • Ter monitorização que avise quando o site começa a responder com erros, em vez de esperar que um cliente ligue.

Um erro 500 assusta, mas quase sempre se resolve depressa quando há registos, cópias de segurança e alguém que sabe onde procurar. Se o teu site não tem nada disto, fala connosco antes de o erro aparecer.

Imagem: Wikimedia Commons, domínio público (CC0).

Partilhar:

Tens um projeto em mente?

Falamos sobre o teu site ou app - sem compromisso.

Falar com o estúdio