Pergunta

Eu preciso configurar o meu script PHP na parte superior para desativar o relatório de erro para padrões estritos.

Alguém pode ajudar?

Foi útil?

Solução

Você quer desativar o relatório de erro, ou apenas impedir que o usuário vê-lo? É geralmente uma boa idéia para registrar erros, mesmo em um local 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 vão estar logado para seu log de sistema padrão, ou usar a diretiva error_log para especificar exatamente onde você quer erros para ir.

Outras dicas

Para nenhum erro.

error_reporting(0);

ou por simplesmente não estrita

error_reporting(E_ALL ^ E_STRICT);

e se você quiser exibir todos os erros novamente, o uso

error_reporting(-1);

Todas as soluções acima são correctas. Mas, quando estamos a falar de uma aplicação PHP normal, eles têm que incluídos em cada página, que ele requer. Uma maneira de resolver isso, é através .htaccess na pasta raiz. Apenas para esconder os erros. [Coloque uma das linhas followling 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 o valor 30719 veio, E_ALL (32767), E_STRICT (2048) são realmente constante que segurar valor numérico e (32767 - 2048 = 30719)

O valor padrão error_reporting bandeira é E_ALL & ~ E_NOTICE se não for definido em php.ini. Mas, de alguma instalação (particularmente instalações visando ambientes de desenvolvimento) tem E_ALL | E_STRICT Definir como valor de esta bandeira (este é o valor recomendado durante o desenvolvimento ). Em alguns casos, especialmente quando você vai querer executar alguns projetos de código aberto, que foi desenvolvido antes do PHP 5.3 era e ainda não atualizados com as melhores práticas definidas pelo PHP 5.3, em seu ambiente de desenvolvimento, você provavelmente vai correr em obter algum mensagens como você está recebendo. A melhor maneira de lidar com esta situação, é definida somente E_ALL como o valor de error_reporting bandeira, seja em php.ini ou em código (provavelmente em um front-controller como index.php no web-raiz da seguinte forma:

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}

Em conjunto php.ini:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

WordPress

Se você trabalha no ambiente wordpress, Wordpress define o nível de erro no arquivo wp-includes / load.php em função wp_debug_mode(). Então você tem que mudar o nível após esta função tem sido chamado (em um arquivo não verificado em git assim que é apenas o desenvolvimento), ou seja modificar diretamente a chamada error_reporting()

Eu não vi uma resposta que é limpo e adequado 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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top