web-dev-qa-db-fra.com

Supprimer les messages d'avertissement dans PHP

J'ai du code PHP. Lorsque je l'exécute, un message d'avertissement apparaît.

Comment puis-je supprimer/supprimer/ignorer ces messages d'avertissement?

198
Alireza

Vous devriez vraiment réparer 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);
306
Tatu Ulmanen

Vous pouvez placer un @ devant votre appel de fonction pour supprimer tous les messages d'erreur.

@yourFunctionHere();
107
PetPaulsen

Pour supprimer les avertissements tout en laissant tous les autres rapports d’erreurs activés:

error_reporting(E_ALL ^ E_WARNING); 
35
Karthik

Si vous ne souhaitez pas afficher les avertissements ainsi que les erreurs, utilisez

// Turn off all error reporting
error_reporting(0);

Rapport d'erreur - PHP Manual

27
mohan.gade

Si vous souhaitez supprimer les avertissements et certains autres types d'erreur (par exemple, les avis) tout en affichant toutes les autres erreurs, vous pouvez procéder comme suit:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
12
zstate

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 ajouter 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);
10
Vijay Lathiya

Pas exactement répondre à 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 la tierce partie corrigeait son code. Je conviens que les avertissements ne devraient pas être supprimés, mais je ne pouvais pas montrer mon travail à un client avec le message d'avertissement affiché à l'écran. Ma solution:

printf('<div style="display:none">');
    ...Third-party stuff here...
printf('</div>');

Warning était toujours dans le code source de la page, mais invisible pour le client.

10
DaveWalley

Vous pouvez supprimer l'avertissement à l'aide de error_reporting , mais le meilleur moyen consiste à réparer votre script en premier lieu.

Si vous ne savez pas comment, éditez votre question et montrez-nous la ligne en question et l'avertissement qui y est affiché.

7
Pekka 웃

Je pense que la meilleure solution est la configuration de .htaccess. Ainsi, vous n’avez pas à modifier le code de l’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
5

Je le fais comme suit dans mon php.ini:

error_reporting = E_ALL & ~E_WARNING  & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

Cela enregistre uniquement les erreurs fatales et aucun avertissement.

5
navid

PHP 7.2 fournit des exemples à essayer. Voici un extrait de ce qui est donné dans le fichier php.ini à partir de la ligne 449.

; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL

Alors lisez-le et essayez les différents exemples qu’ils fournissent. une fois modifié, redémarrez votre serveur et testez les scénarios.

0
klewis