Como silenciar erros e avisos no WordPress em emergências
Às vezes, erros ou avisos de PHP começam a aparecer no seu site WordPress em produção e estragam o visual ou confundem os visitantes. Pode ocultar temporariamente essas mensagens no ecrã para o site público voltar a parecer normal. Isso é apenas um passo de emergência. Não repara o problema e não significa que ele tenha desaparecido.
Importante: ocultar avisos ou erros no ecrã é apenas temporário. Suprimir o que é mostrado não resolve a causa de fundo. Use isto só como mitigação de curto prazo num site em produção; depois inspecione os registos com segurança, identifique o plugin, o tema ou o código PHP responsável, trabalhe a partir de uma cópia de segurança ou de um ambiente de testes, corrija ou atualize esse código e verifique o site. Não trate os erros ocultos como se fosse seguro ignorá-los. Desativar
WP_DEBUGtambém não escreve os erros num ficheiro de registo.
Passo temporário: ocultar as mensagens de erro dos visitantes
O WordPress já inclui uma linha WP_DEBUG em wp-config.php. Edite essa linha existente. Não cole um segundo define( 'WP_DEBUG', ... ) — definir a mesma constante duas vezes pode gerar um aviso de PHP. Coloque estas definições antes do comentário /* That's all, stop editing! */, não depois.
1. Localize o wp-config.php
Ligue-se com um cliente FTP ou o gestor de ficheiros do seu alojamento e abra o wp-config.php na diretoria raiz da sua instalação WordPress.
2. Edite a linha WP_DEBUG existente
Procure a linha que já se parece com define( 'WP_DEBUG', true ); ou define( 'WP_DEBUG', false );. Altere-a para que a depuração fique desligada:
define( 'WP_DEBUG', false );
Use o valor booleano false sem aspas. Um 'false' entre aspas é uma cadeia de texto, e o PHP tratá-lo-ia como verdadeiro.
3. Oculte os erros de PHP que ainda apareçam no ecrã, se for preciso
Alguns alojamentos continuam a imprimir erros de PHP mesmo com o modo de depuração do WordPress desligado. Se isso acontecer, adicione a linha seguinte junto da sua definição WP_DEBUG apenas se ela ainda não estiver lá:
@ini_set( 'display_errors', 0 );
Depois de uma edição cuidadosa, essa secção deve parecer-se com isto — não com duas cópias de WP_DEBUG uma a seguir à outra:
define( 'WP_DEBUG', false ); @ini_set( 'display_errors', 0 );
O que isto faz:
define( 'WP_DEBUG', false );— Desliga o modo de depuração do WordPress. Os visitantes já não devem ver a saída de depuração do WordPress. Isto não regista os erros por si.@ini_set( 'display_errors', 0 );— Diz ao PHP para não imprimir erros no HTML da página. É uma definição de apresentação, não uma correção.
Evite usar error_reporting(0); como abordagem principal. Silencia os relatórios do PHP de forma tão completa que fica mais difícil perceber o que se partiu.
O que deve fazer a seguir: diagnosticar e corrigir o erro real
Assim que o site público voltar a ser legível, encontre a causa. Um bom fluxo de trabalho:
- Faça uma cópia de segurança antes de alterar plugins, temas ou código.
- Reproduza o problema numa cópia de testes ou num site local sempre que puder, para que os visitantes nunca vejam a saída de depuração.
- Nessa cópia de testes, ative o registo sem mostrar erros no ecrã. Coloque isto antes de
/* That's all, stop editing! */e atualize as linhas de depuração existentes em vez de as duplicar:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );
Como essas linhas funcionam em conjunto:
WP_DEBUG— tem de sertruepara que as outras duas constantes de depuração tenham efeito.WP_DEBUG_LOG— escreve as mensagens emwp-content/debug.log(ou noutro caminho que indique). Não faz nada seWP_DEBUGfor false.WP_DEBUG_DISPLAY— definido comofalse, maisdisplay_errorsdefinido como0, mantém essas mensagens fora da página para as ler no ficheiro de registo.
Abra o debug.log por FTP ou no gestor de ficheiros do seu alojamento — não o deixe descarregável no navegador. Um ficheiro de registo dentro de wp-content pode expor caminhos do servidor e nomes de plugins se alguém o obtiver por HTTP. Quando terminar, desligue de novo a depuração e elimine ou restrinja o ficheiro de registo.
Use o registo para identificar o plugin, o tema ou o ficheiro PHP que gerou o aviso ou o erro. Atualize ou corrija esse código e volte a carregar as páginas afetadas para confirmar que a mensagem desapareceu.
O WordPress documenta esta configuração de depuração no seu manual para programadores.
Porque não deve ficar só por ocultar a mensagem
Os erros ocultos ainda podem partir funcionalidades, tornar o site mais lento ou deixar um problema de segurança. A limpeza no ecrã só protege os visitantes enquanto trabalha. O objetivo real é um site estável com o problema de fundo resolvido.
Conclusão
Numa emergência, pode ocultar a saída de erros do WordPress e do PHP editando a linha WP_DEBUG existente para false e, se for preciso, desligando o display_errors — sempre antes do comentário “stop editing” e nunca definindo a mesma constante duas vezes. Depois diagnostique a causa numa cópia de segurança ou de testes com registo de depuração, corrige o plugin, o tema ou o código PHP responsável e verifica. Ocultar um aviso é temporário; o que permanece é corrigir o erro.
