Um usuário perguntou ?
Olá. Esta página de documentação indica que se eu tiver o seguinte conjunto no arquivo wp-config.php, nenhuma mensagem PHP será exibida na tela:
define(' WP_DEBUG', false );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', false );
Estou entendendo isso corretamente? Ou seja, posso definir WP_DEBUG_DISPLAY como false e esperar que as mensagens PHP *nunca* apareçam na tela? Eu pergunto porque para três sites separados, esse não era o caso. Recentemente, tive um site exibindo um aviso de PHP e um erro fatal de PHP na tela. Em outro site, você imprimiu avisos PHP na tela (captura de tela).
No último caso, o aviso estava se referindo a um arquivo principal do WordPress, mas estava sendo exibido no controle deslizante Slide Revolution. Perguntei aos desenvolvedores do Slider Revolution e eles não sabiam por que os avisos foram impressos. Mas eles me disseram para adicionar código adicional ao wp-config para suprimi-los:
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
Esse código realmente suprimiu os avisos. Eu também liguei para meu servidor web (SiteGround) e eles me disseram a mesma coisa: Eles não sabem porque WP_DEBUG_DISPLAY não suprime os avisos, mas eles sempre adicionam as linhas extras ini_set ao wp-config.
Nesse caso também, o problema estava presente no meu site ao vivo, mas não no meu site de palco (que está em outro servidor, não no SiteGround) ou no meu site de desenvolvimento local.
Este tópico foi modificado 1 ano, 3 meses atrás por. Este tópico foi modificado 1 ano, 3 meses atrás por.
(@jdembowski)
Moderador do Fórum e Esquadrão Bruto
1 ano, 3 meses atrás
Movido para corrigir o WordPress, esta não é uma questão de desenvolvimento com o WordPress, mas sim de etapas de solução de problemas.
O WP_DEBUG_DISPLAY deve sempre ser configurado para ocultar mensagens PHP falsas?
Acho que é uma questão de boa prática. Geralmente não se trata de segurança, mas exibir erros não ajuda seus visitantes.
Se você habilitar o WP_DEBUG, minha recomendação é fazer login em um arquivo. Certifique-se de desativá-lo depois de obter as informações de depuração que você está procurando.
Se você tiver acesso a um arquivo no servidor web, digamos através de ssh ou cpanel e depois coloque o arquivo onde o servidor web não possa enviar para ninguém.
(@autotutorial)
1 ano, 3 meses atrás
O WSOD foi adicionado desde o wordpress 5.2 e você deve receber erros ou avisos do php, bem como erros fatais, se ativado. com a função error_get_last() também é possível recuperar erros fatais. no php 7 os erros se tornam exceções (no php legacy pode ser qualquer coisa, por exemplo estou no php 7.1 e o comportamento é que tenho php 5, tive que criar set_error_handle para remover os erros porque não consigo usar o ini_set função). WordPress só pode remover erros define( 'WP_DEBUG_DISPLAY', false );
se ini_set não estiver desabilitado e load.php não tiver um erro.
erros fatais serão interceptados com error_get_last() (se seu provedor desabilita ou não habilitou o tratamento de erro ou exceção na mesma chamada, isso é para php 5)
(@carlgross)
1 ano, 2 meses atrás
@jdembowski Obrigado pela resposta. Mas parece que você respondeu a esta pergunta,
>> Devo falsear WP_DEBUG_DISPLAY para sempre ocultar mensagens PHP?
Não é isso que estou pedindo. estou dizendo que estou resolvido define( 'WP_DEBUG_DISPLAY', false );
As mensagens PHP ainda estão aparecendo na minha tela. Isso é esperado ou é um bug?
@autotutorial Obrigado por suas informações. Mas não tenho certeza se entendi tudo. Para começar, posso dizer que estava usando o WordPress 5.4 em ambos os casos. Receio não ter entendido completamente o que você estava dizendo sobre o PHP 7, você pode esclarecer?
Parece que se refere apenas a erros de PHP. Posso dizer que vi avisos do PHP na tela. deve ser corrigido define( 'WP_DEBUG_DISPLAY', false );
suprimir todos os avisos?
Obrigado!
(@autotutorial)
1 ano, 2 meses atrás
criar teste.php
<?php
error_reporting(-1);
ini_set('display_errors','Off');
crie meuload.php
<?php
include dirname(__FILE__).'/test.php';
//Constant undefined
Myconst;
ao ativar a depuração, você pode desativar a exibição de erros; caso contrário, sempre aparecem erros.
<?php
//good
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
<?php
//Bad
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
Esta resposta foi modificada 1 ano e 2 meses atrás por. Causa: correção
(@carlgross)
1 ano, 2 meses atrás
@autotutorial Ok, obrigado por isso. Deixe-me tentar entender lentamente. Se pudermos, até agora, ignorar as linhas de erro do PHP:
error_reporting(-1);
ini_set('display_errors','Off');
você está dizendo isso define('WP_DEBUG_DISPLAY', false);
não irá suprimir mensagens PHP *mas* irá WP_DEBUG
ajustado para true
? Ou essa relação realmente depende das duas linhas de erro PHP que você mencionou acima, ou seja,
error_reporting(-1);
ini_set('display_errors','Off');
Ou estou pronto para tudo?
(@autotutorial)
1 ano, 2 meses atrás
é apenas um código de teste que você deve tentar; caso contrário, você não vai entender. As constantes do WordPress não serão mapeadas e no caso de WP_DEBUG_DISPLAY / WP_DEBUG_LOG somente se WP_DEBUG for true, a menos que WP_DEBUG_LOG seja explicitamente definido como false, debug.log será criado
(@carlgross)
1 ano, 2 meses atrás
Bem obrigado. Acho que entendi o que você está dizendo. Se eu habilitar WP_DEBUG, então poderei suprimir mensagens PHP com WP_DEBUG_DISPLAY. Estou começando a entender?
Se sim, e se eu quiser manter o WP_DEBUG desabilitado, mas também suprimir as mensagens PHP? Qual seria a abordagem correta? Tudo bem adicionar isso ao wp-config:
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
Ou substitua por:
error_reporting(-1);
ini_set('display_errors','Off');
Acho que posso fazer alguma pesquisa PHP sobre isso sozinho.
(@autotutorial)
1 ano, 2 meses atrás
Quando WP_DEBUG com valor booleano é true, ele verifica se WP_DEBUG_DISPLAY tem valor booleano false, a princípio (WP_DEBUG_DISPLAY com valor false), o WordPress configura um erro de exibição com ini_set para desativá-lo.
ini_set( 'display_errors', 0 );
Se sim, e se eu quiser manter o WP_DEBUG desabilitado, mas também suprimir as mensagens PHP? Qual seria a abordagem correta? Tudo bem adicionar isso ao wp-config:
ini_set( 'display_errors', 0 );
conteúdo avançado, se o seu servidor corrigir a exibição do erro (php.ini ou user.ini ou sinalizador htaccess). Quando houver um erro fatal e o WordPress 5.2 WSOD funcionar, vá para o modo de recuperação ou sua tela mostrará o erro.
(@carlgross)
1 ano, 2 meses atrás
@autotutorial Ok, agradeço a informação, obrigado. Chamamos isso de resolvido então 🙂
Isto foi útil?
0 / 0