Comment désactiver les Notices PHP?

Notice: Constant DIR_FS_CATALOG already defined

j'ai déjà commenté display_errors dans php.ini , mais ne fonctionne pas.

Comment faire PHP pour ne pas afficher de telles choses sur les navigateurs?

mise à JOUR

j'ai mis display_errors = Off , mais c'est encore de déclarer de tels avis,

est-ce un problème avec PHP 5.3?

signalant de nombreux appels Stack aussi..

97
demandé sur Charles 2010-05-19 19:41:11

14 réponses

vous pouvez définir display_errors à 0 ou utiliser la fonction error_reporting() .

cependant, les avis sont ennuyeux (je peux en partie sympathiser ) mais ils servent un but. Vous ne devriez pas définir une constante deux fois, la deuxième fois ne fonctionnera pas et la constante restera inchangée!

68
répondu Pekka 웃 2017-05-23 12:26:36

de la documentation PHP ( error_reporting ):

<?php
// Turn off all error reporting
error_reporting(0);
?>

autres options intéressantes pour cette fonction:

<?php

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL & ~E_NOTICE);
// For PHP < 5.3 use: E_ALL ^ E_NOTICE

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>
203
répondu Cristian 2016-01-18 09:41:17

pour la ligne de commande php, définir

error_reporting = E_ALL & ~E_NOTICE

dans /etc/php5/cli/php.ini

commande php exécution puis ommits avis.

26
répondu Paul Salber 2011-11-06 02:18:20
<?php

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

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

source http://php.net/manual/en/function.error-reporting.php

20
répondu Abhishek Goel 2014-11-09 05:28:47

Utilisé Cette Ligne Dans Votre Code

error_reporting(E_ALL ^ E_NOTICE);  

je pense que c'est plein à craquer pour vous.

5
répondu vicky mahale 2017-11-13 09:48:12

vous pouvez définir ini_set('display_errors',0); dans votre script ou définir quelles erreurs vous voulez afficher avec error_reporting() .

4
répondu jeroen 2010-05-19 15:44:41

en ne causant pas les erreurs:

defined('DIR_FS_CATALOG') || define('DIR_FS_CATALOG', 'whatever');

si vous le devez vraiment, alors changez la déclaration d'erreur en utilisant error_reporting() en E_ALL^E_NOTICE.

3
répondu Jonathan Kuhn 2010-05-19 15:46:00

vous recherchez:

php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"
3
répondu Christian Tismer 2014-10-07 20:06:35

pour le code PHP:

<?php
error_reporting(E_ALL & ~E_NOTICE);

pour php.ini config:

error_reporting = E_ALL & ~E_NOTICE
2
répondu Nabi K.A.Z. 2017-11-09 13:14:48

vous pouvez vérifier si la constante est déjà définie en utilisant:

<?php
if (!defined('MYCONST'))
    define('MYCONST', 'Weeha!');
?>
0
répondu Thiago Belem 2010-05-19 15:46:09

je crois que commenter display_errors en php.ini ne fonctionnera pas parce que la valeur par défaut est activée. Vous devez plutôt le désactiver.

n'oubliez pas de redémarrer Apache pour appliquer les modifications de configuration.

notez aussi que même si vous pouvez définir display_errors à l'exécution, le changer ici n'affecte pas les erreurs fatales.

comme noté par d'autres, idéalement pendant le développement vous devriez exécuter avec error_reporting au plus haut niveau possible et display_errors activé. Tout en étant ennuyeux au début, ces erreurs, avertissements, notices et conseils de codage strict s'additionnent et vous permettent de devenir un meilleur codeur.

0
répondu AllenJB 2010-05-19 15:58:05

j'ai trouvé ce truc récemment. Whack un @ au début d'une ligne qui peut produire un avertissement/d'erreur.

Comme par magie, ils disparaître.

0
répondu DrLazer 2010-05-19 16:00:57

utilisez phpinfo() et recherchez Configuration File (php.ini) Path pour voir quel chemin de fichier de configuration pour php est utilisé. PHP peut avoir plusieurs fichiers de configuration selon l'environnement qu'il exécute. Habituellement, pour la console c'est:

/etc/php5/cli / php.ini

et pour php exécuté par apache c'est:

/etc/php5/apache2 / php.ini

et ensuite error_reporting comme vous en avez besoin:

http://www.phpknowhow.com/configuration/php-ini-error-settings / http://www.zootemplate.com/news-updates/how-to-disable-notice-and-warning-in-phpini-file

0
répondu MilanG 2016-02-04 07:56:40

tel que mentionné par certains et si vous êtes l'auteur du code, vous devez corriger toutes ces erreurs, ces notices, etc. parce qu'il causera plus de problèmes à long terme que de ne pas les corriger (surtout si vous mettez votre système D'exploitation à niveau). Pour votre serveur, vous devriez avoir des erreurs affichées dans vos journaux seulement, pas l'écran du client.

donc pour éviter les erreurs dans votre navigateur vous utilisez le drapeau display_errors comme vous avez déjà trouvé:

display_errors = Off

maintenant le vrai problème est quand vous exécutez quelqu'un d'autre code. Dans ce cas, modifier le code est susceptible d'être écrasé à chaque mise à niveau de ce code. Il est fastidieux de maintenir ce code.

dans mon cas, J'exécute PHP avec crontab pour faire tourner le script wp-cron.php de temps en temps. Je recevais des erreurs envoyées à mes e-mails, ce qui devient fastidieux quand vous recevez un e-mail toutes les 10 minutes! Dans ce cas, cependant, le système Wordpress a une configuration le fichier inclut un WP_DEBUG et ils appellent la fonction error_reporting() donc essayer de changer la variable error_reporting sur la ligne de commande ne fonctionnera pas. Au lieu de cela, vous devez éditer le fichier wp-config.php dans le dossier racine et vous assurer que le WP_DEBUG est défini à false . Sinon, vous recevrez tous ces avertissements et avis Tout le temps.

0
répondu Alexis Wilke 2017-07-04 06:44:28