Moodle com erro 500: o que significa e como resolver

Uma página em branco, ou a mensagem "HTTP ERROR 500" ("Internal Server Error"), é das falhas mais frustrantes do Moodle: não diz nada sobre a causa. O que ela significa, na prática, é que o PHP falhou ao montar a página, e o servidor devolveu uma resposta genérica.
A causa real está registrada em algum lugar. O trabalho é achá-la.
Onde está a causa real
- Log de erros do servidor ou do PHP. No painel da hospedagem, procure por "logs de erro". A última linha no horário do erro quase sempre aponta o arquivo e o motivo.
- Depuração do Moodle. Se o log não ajuda, ative a depuração no
config.phppor alguns minutos para a mensagem aparecer na tela. Depois, desative.
As causas mais comuns
1. Versão do PHP incompatível
É a campeã. A hospedagem atualiza o PHP e o Moodle, que só suporta uma faixa de versões, para de funcionar. Também acontece o contrário: atualizar o Moodle sem subir o PHP. Confira os requisitos nas versões do Moodle.
2. Limite de memória do PHP
Relatórios grandes, backups de curso e upgrades consomem memória. Com um limite baixo, a página estoura e devolve erro 500. O log mostra algo como "Allowed memory size exhausted".
3. Plugin quebrado ou incompatível
Se o erro aparece só numa página, atividade ou bloco, o suspeito é o plugin daquela área. Plugins sem manutenção são uma das maiores fontes de erro 500 depois de atualizações. Veja como escolher plugins.
4. Permissões de arquivo e pasta
Depois de uma migração ou restauração, permissões erradas no código ou na pasta moodledata impedem o PHP de ler ou gravar. O resultado pode ser erro 500 ou página em branco.
5. Regras do servidor e .htaccess
Uma regra mal escrita no .htaccess ou na configuração do servidor também derruba tudo com erro 500, inclusive páginas que nem chegam ao Moodle.
Se o erro aparece nos horários de pico
Erro 500 intermitente, que some sozinho, costuma ser servidor no limite: processos do PHP esgotados, memória ou banco sobrecarregado. Contamos um caso assim em servidor caindo no horário de entrega das tarefas. Se a plataforma também não abre no app, veja Moodle não abre: o que fazer.
Perguntas frequentes
O que é o erro 500 no Moodle?
É um erro interno do servidor: o PHP falhou ao montar a página e o servidor devolveu uma resposta genérica. A causa real fica registrada no log de erros do servidor ou do PHP.
O erro 500 no Moodle apareceu depois que a hospedagem atualizou o PHP. O que fazer?
Cada versão do Moodle suporta uma faixa de versões do PHP. Se a hospedagem trocou o PHP para uma versão fora dessa faixa, o Moodle quebra. A solução é voltar para uma versão de PHP compatível ou atualizar o Moodle.
Como ver a causa do erro 500?
No log de erros do servidor web ou do PHP, normalmente acessível pelo painel da hospedagem. Também dá para ativar a depuração do Moodle no config.php, por pouco tempo.
Erro 500 pode ser falta de memória?
Sim. Se o limite de memória do PHP for baixo, páginas pesadas, relatórios e upgrades estouram o limite e devolvem erro 500.