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..
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!
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);
?>
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.
<?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
Utilisé Cette Ligne Dans Votre Code
error_reporting(E_ALL ^ E_NOTICE);
je pense que c'est plein à craquer pour vous.
vous pouvez définir ini_set('display_errors',0);
dans votre script ou définir quelles erreurs vous voulez afficher avec error_reporting()
.
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.
vous recherchez:
php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"
pour le code PHP:
<?php
error_reporting(E_ALL & ~E_NOTICE);
pour php.ini
config:
error_reporting = E_ALL & ~E_NOTICE
vous pouvez vérifier si la constante est déjà définie en utilisant:
<?php
if (!defined('MYCONST'))
define('MYCONST', 'Weeha!');
?>
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.
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.
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
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.