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á a mostrar 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 exactamente 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 ficheiro que não existe, uma ligação que falhou. Não pára a página, mas alguma coisa não está a acontecer.
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 sítios

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 ficheiro em vez do ecrã: 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 a mostrar 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 a ser escritos no registo, continuam a custar trabalho ao servidor em cada visita, e um ficheiro de registo com milhares de linhas iguais come o espaço e os ficheiros disponíveis da conta.

O caminho do ficheiro 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á actualizado 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. Actualize tudo; se não houver actualizaçã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 registo 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 ficheiro. O sintoma típico é um headers already sent, ou uma exportação que descarrega um ficheiro 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

Registar 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 ecrã, ligue, reproduza, desligue. Minutos, não dias.

Tem o registo 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 600,00 MT/mês

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?