Réponses:
Vous devez vraiment corriger ce qui cause l'avertissement, mais vous pouvez contrôler la visibilité des erreurs avec error_reporting()
. Pour ignorer les messages d'avertissement, vous pouvez utiliser quelque chose comme:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, permettant tous les rapports d'erreur en plus des avertissements, semble être un meilleur choix d'argument error_reporting
.
Vous pouvez mettre un @ devant votre appel de fonction pour supprimer tous les messages d'erreur.
@yourFunctionHere();
dns_get_record
lanceront des avertissements. Votre code peut compenser l'avertissement, mais il les envoie quand même. La désactivation du rapport d'erreurs fonctionne sur le serveur de production, mais pas sur le serveur de développement. Si vous générez du contenu XML, l'avertissement empêchera le navigateur de s'afficher car le serveur envoie du XML mal formé provoqué par l'avertissement. Parfois, vous le souhaitez lors du développement, mais pas pour quelque chose provoqué par un échec de recherche DNS temporaire que vous compensez déjà.
Si vous ne souhaitez pas afficher les avertissements ainsi que les erreurs, utilisez
// Turn off all error reporting
error_reporting(0);
dans Core Php pour masquer le message d'avertissement, définissez error_reporting (0) en haut du fichier include commun ou du fichier individuel.
Dans Wordpress, masquer les avertissements et les avis, ajoutez le code suivant dans le fichier 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);
Ne répondant pas exactement à la question, mais je pense que c'est un meilleur compromis dans certaines situations:
J'ai reçu un message d'avertissement à la suite d'une instruction printf () dans une bibliothèque tierce. Je savais exactement quelle était la cause - une solution temporaire pendant que le tiers corrigeait leur code. J'accepte que les avertissements ne doivent pas être supprimés, mais je n'ai pas pu démontrer mon travail à un client avec le message d'avertissement s'affichant à l'écran. Ma solution:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
L'avertissement était toujours dans la source de la page pour rappel, mais invisible pour le client.
ob_start()
et à la ob_end_clean()
place. De cette façon, le contenu n'est même pas envoyé au navigateur (ce qu'il fait ici).
Je pense que la meilleure solution est la configuration de .htaccess De cette façon, vous n'avez pas à modifier le code d'application. Voici les directives pour 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
Vous pouvez supprimer l'avertissement en utilisant error_reporting mais la meilleure façon est de corriger votre script en premier lieu.
Si vous ne savez pas comment, modifiez votre question et montrez-nous la ligne en question et l'avertissement qui s'affiche.
Il y a déjà une réponse avec Error Control Operator mais il manque d'explication. Vous pouvez utiliser l' @
opérateur avec chaque expression et il masque les erreurs (sauf les erreurs fatales).
@$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()
Pour le débogage, c'est une méthode rapide et parfaite. Mais vous ne devriez jamais l'utiliser en production ni inclure de façon permanente dans votre version locale. Cela vous donnera beaucoup d'irritation inutile.
Vous devriez plutôt considérer:
1. Paramètres de rapport d'erreur comme mentionné dans la réponse acceptée.
error_reporting(E_ERROR | E_PARSE);
ou à partir des paramètres PHP INI
ini_set('display_errors','Off');
2. Détection des exceptions
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}