Erro Interno do Servidor 500: o que causa e como corrigir

Um Erro Interno do Servidor 500 é um dos problemas mais comuns que proprietários e administradores de sites encontram. Ele sinaliza que algo deu errado no servidor — mas não oferece diagnósticos precisos. Este artigo explica o que normalmente desencadeia um erro 500 e como você pode resolvê-lo.
Causas possíveis de um erro 500
Um erro 500 pode surgir por muitos motivos. Os mais frequentes são:
- Problemas de recursos do lado do servidor
Frequentemente, o erro 500 pode ser causado por problemas técnicos no servidor, como falta de recursos (RAM, tempo de CPU).
- Erros no código do site
Scripts ou código do site podem conter erros que causam uma falha. Isso pode ser devido a requisições incorretas, erros em arquivos de configuração ou problemas com a interação de componentes do site.
- Problemas com o arquivo .htaccess
O arquivo .htaccess é usado para configurar o servidor web e pode conter erros que resultarão em um erro 500. Por exemplo, regras de redirecionamento incorretas ou parâmetros incorretos podem causar uma falha.
- Atualizações recentes
Erros podem ocorrer após atualizações no site ou em aplicativos do servidor onde as alterações não foram tratadas corretamente.
Como corrigir um erro 500
- Verificar os logs do servidor web
Para determinar a causa de um erro 500, o primeiro passo é verificar os logs do servidor. Esses logs geralmente contêm informações sobre a falha — seja um erro de código, má configuração ou um problema no nível do servidor. No entanto, é importante entender que os logs do servidor web (como os do Nginx ou Apache) frequentemente registram apenas a ocorrência do erro e o código de resposta, não a causa raiz. Isso é especialmente verdade para o Nginx, que geralmente atua como um proxy e simplesmente encaminha o erro da aplicação backend.
Dependendo do servidor web em uso, os logs podem estar localizados nos seguintes diretórios:
Apache:
-
Ubuntu/Debian:
/var/log/apache2/error.log -
CentOS/AlmaLinux/Rocky Linux:
/var/log/httpd/error.log
Nginx:
/var/log/nginx/error.log
Se o seu servidor for gerenciado por meio de um painel de controle como o FASTPANEL, a visualização de logs se torna ainda mais fácil. Para fazer isso:
-
Faça login no painel de controle.
-
Abra o cartão do site e localize a seção "Logs".
-
A aba "Frontend Error Log" contém erros do servidor web Nginx, enquanto a aba "Backend Error Log" contém erros do Apache.
Lembre-se de que muitos CMSs e frameworks (WordPress, Laravel, Joomla, etc.) mantêm seus próprios logs de erro. Esses logs geralmente fornecem informações mais precisas sobre a causa de um erro 500. Consulte a documentação da sua plataforma para encontrar onde esses logs são armazenados.
Os logs provavelmente lhe darão informações detalhadas sobre o que deu errado. Se o erro 500 for acionado por má configuração ou problemas de código, você pode ver os arquivos — ou até mesmo as linhas exatas — que causam a falha.
- Ativar o registro de erros do lado do PHP
Para obter diagnósticos mais detalhados, ative o registro diretamente no PHP — especialmente útil quando o erro se origina no código e não aparece nos logs do servidor web.
Para fazer isso, defina os seguintes valores no arquivo php.ini:
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
Aqui:
-
display_errors— suprime a saída de erros no navegador -
log_errors— grava erros em um arquivo de log -
error_log— caminho para o arquivo de log (o PHP deve ter permissões de escrita)
Locais típicos do php.ini:
-
Debian/Ubuntu:
/etc/php/*/apache2/php.iniou/etc/php/*/cli/php.ini -
CentOS/AlmaLinux:
/etc/php.ini
Ou localize-o através de:
php -i | grep "php.ini"
No FASTPANEL: abra o cartão do site → “PHP Settings”, procure por variáveis como display_errors, altere seus valores e clique em “Salvar”.
- Verificar o arquivo .htaccess
Se o erro apareceu após a edição do .htaccess, reverta o arquivo para seu estado anterior.
Se você não tem certeza do que exatamente mudou, renomeie temporariamente o .htaccess (por exemplo, para .htaccess.bak) — se o erro desaparecer, então o problema está neste arquivo.
Neste caso, tente restaurar o arquivo .htaccess de um backup, se disponível, ou use o arquivo .htaccess padrão para o seu CMS, que você pode obter aqui.
- Verificar permissões e propriedade de arquivos
Permissões inadequadas podem desencadear um erro 500. Certifique-se de que a raiz do site e todos os arquivos subjacentes tenham direitos e proprietário corretos:
ls -laR /path/to/your/site/root
Permissões recomendadas:
-
Para diretórios: 755 — leitura, escrita e execução para o proprietário; leitura e execução para todos os outros.
-
Para arquivos: 644 — leitura e escrita para o proprietário; apenas leitura para todos os outros.
Propriedade:
Arquivos e pastas devem pertencer ao usuário do servidor web (por exemplo, www-data ou apache).
Se necessário, você pode ajustar permissões e propriedade usando os seguintes comandos:
- Mude para o diretório raiz do seu site:
cd /path/to/root/directory/site
- Defina a propriedade e as permissões corretas:
sudo chown -R yoursiteuser:yoursiteuser . && sudo chmod 644 . -R && sudo chmod +X . -R
Por favor, substitua yoursiteuser pelo usuário e grupo reais que possuem seu site.
- Desativar plugins e temas.
Para sites impulsionados por CMS como o WordPress, um erro 500 geralmente surge de conflitos de plugins ou temas. Desative todos os plugins e mude para um tema padrão para ver se isso resolve o problema.
- Certifique-se de que o servidor tem recursos livres suficientes para seus sites.
- Verifique se você tem espaço livre em disco suficiente:
sudo df -h
- Verifique se o servidor não ficou sem inodes:
sudo df -ih
- Verifique se o servidor tem RAM suficiente:
sudo free -mh
- Verifique a carga atual da CPU:
sudo ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
- Alternativamente, abra o monitor de processos com o comando:
sudo top
Se você ficou sem espaço em disco ou inodes, você pode identificar quais arquivos e diretórios consomem mais espaço seguindo as instruções no artigo relevante.
Se a carga de RAM ou CPU estiver excessivamente alta, as causas podem variar. Comece sua investigação bloqueando bots de mecanismos de busca, pois eles são frequentemente a fonte de carga elevada.
- Verificar se o SGBD está íntegro.
Na maioria das vezes será o MySQL; abaixo estão várias etapas rápidas para verificar se seus bancos de dados estão OK.
- Confirme que o serviço MySQL está em execução:
sudo systemctl status mysql
- Verifique o log de erros do MySQL:
sudo grep -i error /var/log/mysql/error.log
- Verifique todos os bancos de dados em busca de erros:
mysqlcheck -A -c
Se erros forem encontrados, primeiro tenha certeza absoluta de que você tem backups dos bancos de dados afetados. Se necessário, crie um dump com:
mysqldump -u [user] -p [database_name] > /path/to/file/dump.sql
-
Substitua
[user]pelo nome de usuário do MySQL. -
Substitua
[database_name]pelo nome do banco de dados que você deseja exportar. -
/path/to/dump.sqlé o caminho onde o arquivo dump será salvo.
Após isso, execute o procedimento de correção de erros com mysqlcheck:
mysqlcheck -A --auto-repair -c
- Contatar seu provedor de hospedagem.
Se você não conseguir identificar o problema, pode valer a pena contatar o suporte do seu provedor de hospedagem. Ele pode ajudar a identificar problemas no servidor que não são visíveis no nível do usuário. Você pode aprender sobre como escolher o provedor de hospedagem certo neste artigo.
Conclusão
Erro 500 não é uma sentença para o seu site. Com a ajuda de ferramentas de diagnóstico básicas, você pode descobrir rapidamente a causa e corrigir o problema. Se você não estiver confiante em suas habilidades, sempre pode procurar especialistas. É importante lembrar que o erro 500 encontrado e corrigido a tempo o ajudará a evitar problemas mais sérios no futuro.