Avisos de PHP à vista no site: o que são e como os calar

No topo da página, ou no meio do painel, aparecem linhas como Warning: ... in /home/conta/public_html/wp-content/plugins/... on line 214. O site até funciona. Mas está mostrando a toda a gente os caminhos das pastas do servidor, o nome da conta e, às vezes, pedaços de consultas à base de dados.

Isto é um problema de segurança antes de ser um problema de estética. Os varredores automáticos recolhem exatamente esta informação: caminhos completos, versões e nomes de plugins. Trate disto hoje, mesmo que o site esteja a funcionar.

O que os avisos são, e o que não são

Nem todas as mensagens têm o mesmo peso. A palavra que vem antes dos dois pontos diz tudo:

A palavra O que quer dizer
Fatal error A página parou aqui. É a única que parte mesmo o site: erros comuns do WordPress. Se falar de memória esgotada, aumentar a memória disponível ao WordPress.
Warning Alguma coisa correu mal mas o PHP continuou. Um arquivo que não existe, uma ligação que falhou. Não pára a página, mas alguma coisa não está acontecendo.
Notice Uma desatenção no código, como usar uma variável que nunca foi definida. Ruído, até serem muitos.
Deprecated Código escrito para uma versão antiga do PHP, a correr numa nova. É o aviso que aparece às centenas depois de mudar para PHP 8.

Primeiro: calar, em três sites

As mensagens estão à vista porque alguma coisa mandou mostrá-las. Normalmente é uma destas três, e vale a pena verificar as três por ordem:

1 No wp-config.php. Procure a linha do WP_DEBUG. Se estiver a true, é quase de certeza isto: alguém a ligou para diagnosticar e nunca a desligou. Ponha define( 'WP_DEBUG', false );.
2 Se precisa do diagnóstico ligado, então ligue-o para um arquivo em vez do tela: WP_DEBUG a true, WP_DEBUG_LOG a true e WP_DEBUG_DISPLAY a false.
3 Nas opções do PHP. No cPanel, Select PHP Version › Options, confirme que o display_errors está desligado. É assim que está de origem, mas pode ter sido mudado.
4 Limpe a cache do plugin de cache, se tiver um. As páginas guardadas continuam mostrando os avisos que tinham quando foram guardadas.
Um cinto por cima das calças. Acrescentar @ini_set( 'display_errors', 0 ); no topo do wp-config.php, logo a seguir ao <?php, garante que nada mostra erros mesmo que um plugin os volte a ligar por sua conta.

Depois: tratar a causa

Calar não cura. Os avisos continuam sendo escritos no registro, continuam custando trabalho ao servidor em cada visita, e um arquivo de registro com milhares de linhas iguais come o espaço e os arquivos disponíveis da conta.

O caminho do arquivo diz-lhe de quem é a culpa. Se a linha tem wp-content/plugins/nome-do-plugin/, o problema é desse plugin. Se tem wp-content/themes/, é o tema.

O que a linha diz O que fazer
Um plugin que você conhece Actualize-o. Se já está atualizado e continua, é um plugin abandonado pelo autor: procure substituto.
Um plugin que não usa Apague-o. É a cura mais rápida e a mais barata.
Centenas de Deprecated depois de mudar de PHP O código é velho para a versão nova. Atualize tudo; se não houver atualização, volte a uma versão de PHP anterior enquanto procura substituto: mudar a versão do PHP sem partir o site.
O tema Se é um tema comprado, peça ao autor. Se é um tema-filho feito por alguém, é aí que se corrige.

O registro completo, onde vive e como se lê linha a linha, está em onde está o log de erros do PHP.

O efeito lateral que ninguém liga aos avisos

Um aviso impresso antes do resto da página parte coisas que nada têm a ver com ele. O PHP já escreveu texto para o navegador, e a partir daí não consegue mais reencaminhar nem enviar um arquivo. O sintoma típico é um headers already sent, ou uma exportação que baixa um arquivo corrompido, ou uma entrada que não reencaminha.

Por isso, se alguma coisa estranha começou ao mesmo tempo que os avisos, é provavelmente a mesma história.

A regra que fica

Registrar tudo, mostrar nada. É a combinação certa para um site no ar, e é como o servidor já vem configurado. Se algum dia precisar mesmo de ver o erro no tela, ligue, reproduza, desligue. Minutos, não dias.

Tem o registro cheio de avisos e não sabe qual é o culpado?

Mande-nos algumas linhas

VEJA TAMBÉM

Hospedagem WordPress

Política de Suporte

Perguntas frequentes

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 55,00/mês

Ver planos
  • 0 Usuários acharam útil
Esta resposta lhe foi útil?