x-shaped metal

Como silenciar erros e avisos no WordPress em emergências

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_DEBUG també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:

  1. Faça uma cópia de segurança antes de alterar plugins, temas ou código.
  2. 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.
  3. 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 ser true para que as outras duas constantes de depuração tenham efeito.
  • WP_DEBUG_LOG — escreve as mensagens em wp-content/debug.log (ou noutro caminho que indique). Não faz nada se WP_DEBUG for false.
  • WP_DEBUG_DISPLAY — definido como false, mais display_errors definido como 0, 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.

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *