Respostas:
Você realmente deve corrigir o que está causando o aviso, mas pode controlar a visibilidade dos erros com error_reporting()
. Para pular mensagens de aviso, você pode usar algo como:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, ativar todos os relatórios de erros, além de avisos, parece ser uma opção melhor para argumentar error_reporting
.
Você pode colocar um @ na frente da sua chamada de função para suprimir todas as mensagens de erro.
@yourFunctionHere();
dns_get_record
lançarão avisos. Seu código pode compensar o aviso, mas ainda o lança. Desativar o relatório de erros funciona no servidor de produção, mas não no servidor de desenvolvimento. Se você estiver gerando conteúdo XML, o aviso fará com que o navegador não seja renderizado porque o servidor está enviando XML malformado causado pelo aviso. Às vezes, você quer isso em desenvolvimento, mas não por algo causado por uma falha temporária na pesquisa de DNS que você já compensa.
Se você não deseja mostrar avisos e erros, use
// Turn off all error reporting
error_reporting(0);
no Core Php para ocultar o conjunto de mensagens de aviso error_reporting (0) na parte superior do arquivo de inclusão comum ou arquivo individual.
No Wordpress ocultar Avisos e avisos, adicione o seguinte código no arquivo wp-config.php
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Não estou respondendo exatamente à pergunta, mas acho que esse é um compromisso melhor em algumas situações:
Eu recebi uma mensagem de aviso como resultado de uma instrução printf () em uma biblioteca de terceiros. Eu sabia exatamente qual era a causa - uma solução temporária enquanto os terceiros corrigiam seu código. Concordo que os avisos não devem ser suprimidos, mas não pude demonstrar meu trabalho a um cliente com a mensagem de aviso aparecendo na tela. Minha solução:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
O aviso ainda estava na fonte da página como um lembrete para mim, mas invisível para o cliente.
ob_start()
e ob_end_clean()
em vez disso. Dessa forma, o material nem é enviado ao navegador (o que ocorre aqui).
Eu acho que a melhor solução é a configuração do .htaccess. Dessa forma, você não precisa alterar o código do aplicativo. Aqui estão as diretrizes para o Apache2
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
Você pode suprimir o aviso usando error_reporting, mas a melhor maneira é corrigir o script em primeiro lugar.
Se você não souber como, edite sua pergunta e mostre-nos a linha em questão e o aviso exibido.
Já existe uma resposta com o Operador de controle de erros, mas falta explicação. Você pode usar o @
operador com todas as expressões e oculta erros (exceto Erros Fatais).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
Para depuração, é um método rápido e perfeito. Mas você nunca deve usá-lo na produção nem incluir permanentemente na sua versão local. Isso lhe dará muita irritação desnecessária.
Você deve considerar:
1. Erro ao relatar as configurações conforme mencionado na resposta aceita.
error_reporting(E_ERROR | E_PARSE);
ou das configurações do PHP INI
ini_set('display_errors','Off');
2. Capturando exceções
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}