Preciso configurar meu script PHP na parte superior para desativar o relatório de erros para padrões rígidos.
Alguém pode ajudar?
Preciso configurar meu script PHP na parte superior para desativar o relatório de erros para padrões rígidos.
Alguém pode ajudar?
Respostas:
Deseja desativar o relatório de erros ou apenas impedir que o usuário o veja? Geralmente, é uma boa ideia registrar erros, mesmo em um site de produção.
# in your PHP code:
ini_set('display_errors', '0'); # don't show any errors...
error_reporting(E_ALL | E_STRICT); # ...but do log them
Eles serão registrados no log do sistema padrão ou usarão a error_log
diretiva para especificar exatamente para onde você deseja que os erros ocorram.
php.ini
arquivo, por exemplo, se você não pode modificar o código PHP.
php.ini
ou .htaccess
em algum lugar do meu código PHP.
Sem erros.
error_reporting(0);
ou simplesmente não é rigoroso
error_reporting(E_ALL ^ E_STRICT);
e se você quiser exibir todos os erros novamente, use
error_reporting(-1);
^
só é bom para omitir um tipo de erro. Se você deseja desativar outros tipos, use o E_ALL & ~E_DEPRECATED & ~E_STRICT
formato. Ou talvez o (E_ALL & ~(E_DEPRECATED | E_STRICT))
formato.
ini_set('error_reporting', E_ALL&~E_STRICT);
Suprimir o relatório de erros STRICT no PHP> = 5.4ini_set('error_reporting', E_ALL^E_STRICT);
^
("xor") em vez de & ~
("e não") é uma má ideia ! ^
depende da suposição de que, por exemplo, E_STRICT faça parte de E_ALL e sempre fará parte dele. Isso é ruim porque E_ALL mudou no passado (E_STRICT não era passado, mas agora é a partir do PHP 5.4). Se a suposição falhar um dia, ^
ela não será apenas quebrada, mas na verdade fará o oposto do que ela deveria fazer: ela habilitará o E_STRICT devido ao modo como o XOR ( ^
) funciona. & ~
no entanto, sempre desativa E_STRICT, não importa o valor atual de E_ALL. Portanto, & ~
deve ser usado.
Todas as soluções acima estão corretas. Mas, quando estamos falando de um aplicativo PHP normal, eles precisam ser incluídos em todas as páginas, o que é necessário. Uma maneira de resolver isso é através .htaccess
da pasta raiz. Apenas para ocultar os erros. [Coloque uma das seguintes linhas no arquivo]
php_flag display_errors off
Ou
php_value display_errors 0
Em seguida, para definir o relatório de erros
php_value error_reporting 30719
Se você está se perguntando como foi o valor 30719
, E_ALL (32767), E_STRICT (2048) são na verdade constantes que mantêm o valor numérico e ( 32767 - 2048 = 30719
)
php_admin_value error_reporting
para isso funcionar (na configuração do vhost).
O valor padrão do sinalizador error_reporting é E_ALL & ~ E_NOTICE, se não estiver definido no php.ini. Mas em algumas instalações (principalmente as que se destinam a ambientes de desenvolvimento), o E_ALL | E_STRICT definido como valor deste sinalizador (este é o valor recomendado durante o desenvolvimento ). Em alguns casos, especialmente quando você deseja executar alguns projetos de código aberto, que foram desenvolvidos antes da era do PHP 5.3 e ainda não atualizados com as melhores práticas definidas pelo PHP 5.3, em seu ambiente de desenvolvimento, você provavelmente encontrará algumas mensagens como você está recebendo. A melhor maneira de lidar com essa situação é definir apenas E_ALL como o valor do sinalizador error_reporting , emphp.ini ou em código (provavelmente em um controlador frontal como index.php em web-root da seguinte maneira:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
WordPress
Se você trabalha no ambiente wordpress, o Wordpress define o nível de erro no arquivo wp-includes / load.php na função wp_debug_mode()
. Portanto, você precisa alterar o nível APÓS que essa função tenha sido chamada (em um arquivo não registrado no git, portanto, isso é apenas desenvolvimento), ou modificar diretamente a error_reporting()
chamada
Não vi uma resposta limpa e adequada para software pronto para produção, então aqui vai:
/*
* Get current error_reporting value,
* so that we don't lose preferences set in php.ini and .htaccess
* and accidently reenable message types disabled in those.
*
* If you want to disable e.g. E_STRICT on a global level,
* use php.ini (or .htaccess for folder-level)
*/
$old_error_reporting = error_reporting();
/*
* Disable E_STRICT on top of current error_reporting.
*
* Note: do NOT use ^ for disabling error message types,
* as ^ will re-ENABLE the message type if it happens to be disabled already!
*/
error_reporting($old_error_reporting & ~E_STRICT);
// code that should not emit E_STRICT messages goes here
/*
* Optional, depending on if/what code comes after.
* Restore old settings.
*/
error_reporting($old_error_reporting);
E_ALL & ~E_DEPRECATED & ~E_STRICT
para produção. Observe que eles sugerem que você desative padrões rígidos.