web-dev-qa-db-fra.com

Comment désactiver PHP Notices?

_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 envoyer de telles choses aux navigateurs?

UPDATE

Je mets _display_errors = Off_ mais il continue de signaler de tels avis,

Est-ce un problème avec PHP 5.3?

Signaler de nombreuses piles d'appels aussi ..

112
user198729

Vous pouvez régler display_errors sur 0 ou utiliser la fonction error_reporting() .

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

74
Pekka 웃

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);

?>
223
Cristian

Pour la ligne de commande php, définissez

error_reporting = E_ALL & ~E_NOTICE

dans /etc/php5/cli/php.ini

la commande php exécution exécute ensuite les avis.

31
Paul Salber
<?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
Abhishek Goel

Utilisé cette ligne dans votre code

error_reporting(E_ALL ^ E_NOTICE);  

Je pense que son aide complète à vous.

11
vicky mahale

Tu recherches:

php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"
4
Christian Tismer

Vous pouvez définir ini_set('display_errors',0); dans votre script ou définir les erreurs que vous souhaitez afficher avec error_reporting().

4
jeroen

en ne causant pas les erreurs:

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

Si vous devez vraiment le faire, modifiez le rapport d'erreur à l'aide de error_reporting () en E_ALL ^ ​​E_NOTICE.

3
Jonathan Kuhn

Pour le code PHP:

<?php
error_reporting(E_ALL & ~E_NOTICE);

Pour php.ini config:

error_reporting = E_ALL & ~E_NOTICE
2
Nabi K.A.Z.

Je pense que commenter les display_errors dans php.ini ne fonctionnera pas car la valeur par défaut est On. Vous devez plutôt le régler sur "Off".

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

Notez également que bien que vous puissiez définir display_errors lors de l'exécution, le modifier ici n'affecte pas les erreurs FATAL.

Comme d'autres l'ont noté, idéalement pendant le développement, vous devriez exécuter error_reporting au plus haut niveau possible et display_errors activé. Bien qu'ennuyeux au début, ces erreurs, avertissements, avis et conseils de codage stricts s’additionnent et vous permettent de devenir un meilleur codeur.

0
AllenJB

Utilisez phpinfo () et recherchez Configuration File (php.ini) Path pour voir quel chemin de fichier de configuration php est utilisé. PHP peut avoir plusieurs fichiers de configuration en fonction de l'environnement sur lequel il est exécuté. Habituellement, pour la console c'est:

/etc/php5/cli/php.ini

et pour php géré par Apache c'est:

/etc/php5/Apache2/php.ini

Et ensuite, configurez 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
MilanG

J'ai trouvé cette astuce récemment. Frappez un @ au début d'une ligne pouvant générer un avertissement/une erreur.

Comme par magie, ils disparaissent.

0
DrLazer

Comme mentionné par certains et si vous êtes l'auteur du code, corrigez toutes ces erreurs, ces avis, etc. Pour votre serveur, des erreurs devraient apparaître dans vos journaux uniquement, pas sur l'écran du client.

Donc, pour éviter les erreurs dans votre navigateur, vous utilisez l'indicateur display_errors comme vous l'avez déjà trouvé:

display_errors = Off

Maintenant, le vrai problème est lorsque vous exécutez le code de quelqu'un d'autre. Dans ce cas, la modification du code est susceptible d'être écrasée chaque fois que vous mettez à niveau ce code. Il est fastidieux de maintenir ce code.

Dans mon cas, j’utilise PHP avec crontab pour que le script wp-cron.php s’exécute de temps en temps. Je recevais des erreurs dans mes emails, ce qui devient fastidieux quand vous recevez un email toutes les 10 minutes! Dans ce cas, cependant, le système Wordpress a un fichier de configuration qui inclut un WP_DEBUG et appelle la fonction error_reporting() pour essayer de modifier la variable error_reporting de la commande. la ligne 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 sur false. Sinon, vous recevrez tous ces avertissements et avis tout le temps.

0
Alexis Wilke

Je préfère ne pas définir le error_reporting dans mon code. Mais dans un cas, un produit existant, il y a tellement de notifications qu'il faut les cacher.

J'ai donc utilisé l'extrait suivant pour définir la valeur configurée côté serveur pour error_reporting et soustraire le E_NOTICEs.

error_reporting(error_reporting() & ~E_NOTICE);

Le paramètre de rapport d'erreur peut maintenant être configuré dans php.ini ou .htaccess. Seuls les avis seront toujours désactivés.

0
algorhythm

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

<?php
if (!defined('MYCONST'))
    define('MYCONST', 'Weeha!');
?>
0
Thiago Belem