Erro HTTP 500 Internal Server Error: Causas e Como Resolver

O Que E o Erro HTTP 500?
O erro HTTP 500 (Internal Server Error) e um codigo de status do lado do servidor que significa que o servidor web encontrou uma condicao inesperada que o impediu de atender sua solicitacao. E o erro de servidor mais generico — a forma do servidor dizer 'algo quebrou, mas eu nao sei exatamente o que'.
De acordo com a especificacao HTTP (RFC 9110, Secao 15.6.1), uma resposta 500 deve ser usada quando o servidor nao encontra um codigo de status 5xx mais especifico para descrever o problema. Diferente do erro 503 (que sinaliza uma condicao temporaria), o 500 nao da indicacao se o problema e temporario ou permanente.
A diferenca principal e que o erro 500 e quase sempre causado por um bug, configuracao incorreta ou travamento no codigo do servidor — nao por algo que o visitante fez de errado. A correcao deve vir do proprietario do site ou administrador do servidor.
Como o Erro 500 Aparece
O erro 500 aparece de formas diferentes dependendo do servidor web, provedor de hospedagem e CMS. Aqui estao as mensagens mais comuns que voce encontrara.
500 Internal Server Error — a mensagem padrao
HTTP Error 500 — comum na barra de endereco do navegador
Internal Server Error — o texto generico sem codigo de status
The server encountered an internal error or misconfiguration — mensagem padrao do Apache
500 Internal Server Error – nginx — pagina de erro minimalista do Nginx
There has been a critical error on this website — WordPress (desde a versao 5.2)
HTTP Error 500.19 – Internal Server Error — IIS com codigos de sub-status
500. That's an error. — pagina de erro do proprio Google
Causas Comuns do Erro HTTP 500
O erro 500 pode ser disparado por dezenas de problemas diferentes no servidor. Aqui estao as causas mais comuns, ordenadas pela frequencia com que ocorrem.
Arquivo .htaccess corrompido — Um unico caractere fora do lugar ou uma diretiva invalida no .htaccess faz o Apache travar imediatamente. Essa e a causa #1 em hospedagem compartilhada.
Erros fatais do PHP — Erros de sintaxe, excecoes nao tratadas ou chamadas a funcoes nao definidas interrompem a execucao do script e produzem um erro 500.
Esgotamento do limite de memoria do PHP — Scripts que excedem o memory_limit (padrao 128M) travam sem aviso. Processamento de imagens grandes e consultas complexas ao banco de dados sao gatilhos comuns.
Permissoes de arquivo incorretas — Arquivos devem ter permissao 644 e diretorios 755. Permissoes excessivamente restritivas (ou perigosamente abertas com 777) causam problemas.
Conflitos de plugins ou temas — Um plugin recem-atualizado ou incompativel pode travar toda a aplicacao. Essa e a causa mais comum especifica do WordPress.
Falha na conexao com o banco de dados — Credenciais incorretas, servidor de banco de dados travado ou limite de conexoes excedido impedem a aplicacao de funcionar.
Timeout de script — Scripts de longa duracao excedem o max_execution_time (padrao 30 segundos) e sao encerrados pelo servidor.
Arquivos do CMS corrompidos — Atualizacoes que falharam ou transferencias de arquivo interrompidas deixam arquivos criticos incompletos.
Travamentos do PHP-FPM — Processos worker que morrem por problemas de memoria ou por atingir o limite de pm.max_children fazem o Nginx retornar 500.
Configuracao incorreta do servidor — Versao errada do PHP, configuracoes de virtual host invalidas ou blocos de servidor Nginx incorretos disparam erros 500.
Disco cheio — Quando o servidor fica sem espaco em disco, ele nao consegue gravar logs ou arquivos temporarios, causando travamentos.
Erros em scripts CGI/Perl — Modo de arquivo incorreto (binario vs ASCII), quebras de linha erradas ou modulos ausentes.
Como Resolver o Erro 500 (Como Visitante)
Se voce esta vendo um erro 500 no site de outra pessoa, o problema esta no servidor — nao no seu dispositivo. Porem, ha algumas coisas que voce pode tentar antes de desistir.
Recarregue a pagina — Aguarde 30 segundos, depois pressione F5 ou Ctrl+R (Cmd+R no Mac). Muitos erros 500 sao causados por falhas momentaneas do servidor que se resolvem sozinhas.
Atualizacao forcada — Pressione Ctrl+Shift+R (Cmd+Shift+R no Mac) para ignorar o cache do navegador e buscar uma copia completamente nova.
Limpe o cache e os cookies do navegador — Va ate as configuracoes do navegador e limpe os arquivos em cache. Dados em cache corrompidos podem ocasionalmente causar problemas de exibicao.
Tente o modo anonimo — Abra uma janela anonima/privada para descartar extensoes do navegador ou estado em cache causando problemas.
Verifique se o site esta fora do ar para todos — Use ferramentas como o Verificador de HTTP Headers do DNS Robot para verificar o codigo de resposta do servidor.
Tente novamente mais tarde — Como o problema e do lado do servidor, o proprietario do site precisa corrigi-lo. Aguarde 15-30 minutos e tente novamente.
Entre em contato com o proprietario do site — Se o erro persistir por horas, notifique-o pela pagina de contato ou redes sociais.
Solucao 1: Verifique os Logs de Erro do Servidor
Os logs de erro sao a ferramenta de depuracao mais importante para erros 500. Eles dizem exatamente o que deu errado, incluindo o caminho do arquivo, numero da linha e mensagem de erro. Sempre verifique os logs primeiro antes de tentar qualquer outra coisa.
# Apache error log
tail -100 /var/log/apache2/error.log
# Nginx error log
tail -100 /var/log/nginx/error.log
# PHP-FPM error log
tail -100 /var/log/php-fpm/error.log
# WordPress debug log (if WP_DEBUG_LOG enabled)
tail -100 /path/to/wordpress/wp-content/debug.logSolucao 2: Teste e Repare o .htaccess
Um arquivo .htaccess corrompido ou mal configurado e a causa mais comum de erros 500 em servidores Apache. Um unico erro de digitacao, uma diretiva nao suportada ou uma RewriteRule incorreta pode derrubar o site inteiro.
O teste mais rapido e renomear temporariamente o arquivo. Se o site carregar apos renomea-lo, o .htaccess era o problema.
# Rename to disable .htaccess
mv .htaccess .htaccess_backup
# If site loads, regenerate a clean .htaccess
# For WordPress, go to Settings > Permalinks and click SaveSolucao 3: Corrija as Permissoes de Arquivo
Permissoes de arquivo incorretas impedem o servidor web de ler ou executar arquivos. As permissoes padrao sao 644 para arquivos e 755 para diretorios. Nunca defina as permissoes como 777 — e um risco de seguranca e muitos provedores de hospedagem bloqueiam isso.
# Set correct directory permissions
find /path/to/webroot -type d -exec chmod 755 {} \;
# Set correct file permissions
find /path/to/webroot -type f -exec chmod 644 {} \;
# WordPress wp-config.php (extra security)
chmod 440 wp-config.phpSolucao 4: Aumente os Limites de Memoria e Execucao do PHP
Scripts PHP que excedem o limite de memoria ou o tempo maximo de execucao sao silenciosamente encerrados pelo servidor, resultando em um erro 500. O memory_limit padrao de 128M e o max_execution_time de 30 segundos frequentemente sao baixos demais para aplicacoes complexas.
Voce pode aumentar esses limites de varias formas dependendo da configuracao do servidor.
# Option 1: php.ini (best method)
memory_limit = 256M
max_execution_time = 300
# Option 2: .htaccess (Apache only)
php_value memory_limit 256M
php_value max_execution_time 300
# Option 3: .user.ini (FastCGI/Nginx)
memory_limit = 256M
# Option 4: wp-config.php (WordPress)
define( 'WP_MEMORY_LIMIT', '256M' );Solucao 5: Desative Plugins e Tema (CMS)
Se voce esta usando WordPress, Joomla ou outro CMS, um plugin ou tema com defeito e uma das causas mais comuns de erros 500. A forma mais rapida de testar e desativar todos os plugins de uma vez e depois reativa-los um por um.
# Disable all WordPress plugins (via file system)
cd /path/to/wordpress/wp-content
mv plugins plugins_disabled
# Or use WP-CLI
wp plugin deactivate --all
# Switch to default theme
wp theme activate twentytwentyfourSolucao 6: Verifique a Conexao com o Banco de Dados e Repare
O erro 500 pode ocorrer quando a aplicacao nao consegue se conectar ao banco de dados. Isso acontece quando as credenciais estao erradas, o servidor de banco de dados esta fora do ar ou as tabelas estao corrompidas.
Primeiro verifique as credenciais do banco de dados no arquivo de configuracao (wp-config.php para WordPress, .env para Laravel). Depois teste a conexao e repare tabelas corrompidas se necessario.
# Test MySQL connection
mysql -u username -p -h localhost database_name -e "SELECT 1;"
# Repair and optimize all tables
mysqlcheck -u username -p --auto-repair --optimize database_name
# WordPress: add to wp-config.php, then visit /wp-admin/maint/repair.php
define( 'WP_ALLOW_REPAIR', true );Solucao 7: Verifique a Compatibilidade da Versao do PHP
Executar codigo escrito para uma versao mais antiga do PHP em uma versao mais recente (ou vice-versa) dispara erros fatais. Funcoes obsoletas, comportamentos padrao alterados e recursos removidos sao culpados comuns apos uma atualizacao do PHP.
Verifique sua versao atual do PHP e compare com os requisitos da sua aplicacao.
# Check PHP version
php -v
# List loaded PHP modules
php -m
# Check current memory limit
php -i | grep memory_limitSolucao 8: Verifique o Espaco em Disco
Quando o servidor fica sem espaco em disco, ele nao consegue gravar arquivos de log, arquivos temporarios ou dados de sessao — o que causa erros 500. Isso e frequentemente ignorado, mas surpreendentemente comum, especialmente quando os arquivos de log crescem sem controle.
# Check disk usage
df -h
# Find large files eating disk space
du -sh /var/log
du -sh /tmp
# Clear old log files if needed
truncate -s 0 /var/log/nginx/error.log500 vs 502 vs 503 vs 504: Qual a Diferenca?
A diferenca principal: 500 = o servidor quebrou internamente. 502 = o proxy recebeu lixo do backend. 503 = o servidor esta ativo mas ocupado. 504 = o proxy desistiu de esperar. Voce pode verificar o codigo de status exato que seu servidor retorna usando o Verificador de HTTP Headers do DNS Robot.
| Code | Nome | O Que Significa | Causa Comum |
|---|---|---|---|
| 500 | Internal Server Error | O proprio servidor travou ou lancou uma excecao nao tratada | Erro fatal do PHP, .htaccess incorreto, esgotamento de memoria |
| 502 | Bad Gateway | Um proxy recebeu uma resposta invalida do backend | PHP-FPM travou, backend nao esta rodando, socket fechado |
| 503 | Service Unavailable | O servidor esta temporariamente sobrecarregado ou em manutencao | Pico de trafego, manutencao planejada, limites de recursos |
| 504 | Gateway Timeout | Um proxy esgotou o tempo de espera pela resposta do backend | Consulta lenta ao banco de dados, script de longa duracao, upstream nao responsivo |
Como os Erros 500 Afetam o SEO
Os erros 500 tem um impacto mais severo no SEO do que a maioria dos outros erros HTTP. Veja o que voce precisa saber.
A desindexacao pode comecar em 2 dias. John Mueller do Google confirmou que erros 500 persistentes podem fazer URLs serem removidas do indice em apenas dois dias. Isso e mais rapido que erros 503, que o Google trata como temporarios.
Erros 500 desperdicam orcamento de rastreamento. Diferente dos erros 404 (que o Google eventualmente para de rastrear), erros 500 sao ambiguos — a pagina pode voltar — entao o Googlebot continua tentando de forma agressiva. Isso desperdicamos orcamento de rastreamento em paginas que nao entregam nada.
Rankings caem rapidamente mas se recuperam. Uma vez corrigido o problema, o Google geralmente restaura o rastreamento em dias. Porem, a recuperacao de rankings pode levar semanas — as posicoes nao voltam imediatamente.
Use 503 para manutencao planejada, nunca 500. Uma resposta 503 corretamente configurada com um cabecalho Retry-After diz ao Google para voltar mais tarde sem remover a pagina. Um 500 nao envia esse sinal.
Como Prevenir Erros 500
Prevencao e sempre melhor do que depuracao. Siga estas boas praticas para minimizar o risco de erros 500 no seu site.
Configure monitoramento de uptime — Use ferramentas como UptimeRobot ou Pingdom para verificar seu site a cada 1-5 minutos. Receba alertas instantaneos quando um erro 500 ocorrer.
Sempre teste mudancas em staging — Nunca faca deploy diretamente em producao. Teste atualizacoes de plugins, upgrades de PHP e mudancas de configuracao em um ambiente de staging primeiro.
Use controle de versao (Git) — Faca commit de cada alteracao para poder reverter instantaneamente um deploy ruim com um unico comando.
Implemente tratamento de erros adequado — Envolva consultas ao banco de dados e chamadas de API em blocos try-catch. Registre stack traces completos no servidor para cada erro.
Monitore espaco em disco e recursos do servidor — Configure alertas para uso de disco acima de 80%, CPU alta e pressao de memoria.
Mantenha o software atualizado — Versoes desatualizadas do CMS, plugins e software do servidor contem bugs conhecidos que causam travamentos.
Mantenha backups automatizados — Teste seu procedimento de restauracao regularmente. Um backup que voce nunca testou nao e um backup.
Defina os limites do PHP adequadamente — Configure memory_limit e max_execution_time com base na sua carga de trabalho real, nao nos valores padrao.
Use pipelines de CI/CD — Automatize testes antes do deploy. Se os testes falharem, o deploy nao deve prosseguir.
Verifique a Resposta do Seu Servidor
Use o Verificador de HTTP Headers do DNS Robot para verificar qual codigo de status seu servidor retorna e inspecionar todos os cabecalhos de resposta.
Try Verificador de HTTP HeadersFrequently Asked Questions
O erro HTTP 500 (Internal Server Error) significa que o servidor web encontrou uma condicao inesperada que o impediu de completar sua solicitacao. E um erro generico que indica que algo travou no servidor, mas o servidor nao consegue identificar a causa exata.