Je dois configurer mon script PHP en haut pour désactiver le rapport d'erreur pour des normes strictes.
Quelqu'un peut-il aider?
Je dois configurer mon script PHP en haut pour désactiver le rapport d'erreur pour des normes strictes.
Quelqu'un peut-il aider?
Réponses:
Voulez-vous désactiver le rapport d'erreurs ou simplement empêcher l'utilisateur de le voir? C'est généralement une bonne idée de consigner les erreurs, même sur un site de production.
# in your PHP code:
ini_set('display_errors', '0'); # don't show any errors...
error_reporting(E_ALL | E_STRICT); # ...but do log them
Ils seront consignés dans votre journal système standard ou utiliseront la error_log
directive pour spécifier exactement où vous voulez que les erreurs aillent.
php.ini
fichier, par exemple si vous ne pouvez pas modifier le code PHP.
php.ini
ou .htaccess
ou quelque part dans mon code PHP.
Pour aucune erreur.
error_reporting(0);
ou pour tout simplement pas strict
error_reporting(E_ALL ^ E_STRICT);
et si vous souhaitez afficher à nouveau toutes les erreurs, utilisez
error_reporting(-1);
^
n'est bon que pour omettre un type d'erreur. Si vous souhaitez désactiver des types supplémentaires, vous devez utiliser le E_ALL & ~E_DEPRECATED & ~E_STRICT
format. Ou peut-être le (E_ALL & ~(E_DEPRECATED | E_STRICT))
format.
ini_set('error_reporting', E_ALL&~E_STRICT);
Suppression du signalement des erreurs STRICT en PHP> = 5.4ini_set('error_reporting', E_ALL^E_STRICT);
^
("xor") plutôt que & ~
("et non") est une mauvaise idée ! ^
dépend de l' hypothèse que, par exemple, E_STRICT fait partie de E_ALL et en fera toujours partie. C'est mauvais parce que E_ALL a changé dans le passé (E_STRICT n'était pas passé, mais est maintenant depuis PHP 5.4). Si l'hypothèse échoue un jour, ^
non seulement briser, mais ne fait le contraire de ce qu'il est censé faire: Il permettra E_STRICT en raison de la façon dont XOR ( ^
) fonctionne. & ~
cependant désactive toujours E_STRICT, quelle que soit la valeur actuelle de E_ALL. Par conséquent & ~
devrait être utilisé.
Toutes les solutions ci-dessus sont correctes. Mais, quand nous parlons d'une application PHP normale, ils doivent être inclus dans chaque page, ce que cela nécessite. Un moyen de résoudre ce problème consiste .htaccess
à utiliser le dossier racine. Juste pour cacher les erreurs. [Mettez l'une des lignes suivantes dans le fichier]
php_flag display_errors off
Ou
php_value display_errors 0
Ensuite, pour définir le rapport d'erreur
php_value error_reporting 30719
Si vous vous demandez comment la valeur 30719
est venue, E_ALL (32767), E_STRICT (2048) sont en fait des constantes qui contiennent une valeur numérique et ( 32767 - 2048 = 30719
)
php_admin_value error_reporting
pour que cela fonctionne (dans la configuration vhost).
La valeur par défaut de l' indicateur error_reporting est E_ALL & ~ E_NOTICE s'il n'est pas défini dans php.ini. Mais dans certaines installations (en particulier les installations ciblant les environnements de développement), E_ALL | E_STRICT défini comme valeur de cet indicateur (il s'agit de la valeur recommandée lors du développement ). Dans certains cas, spécialement lorsque vous voudrez exécuter des projets open source, qui ont été développés avant l'ère PHP 5.3 et qui n'ont pas encore été mis à jour avec les meilleures pratiques définies par PHP 5.3, dans votre environnement de développement, vous rencontrerez probablement messages comme vous recevez. La meilleure façon de faire face à cette situation est de définir uniquement E_ALL comme valeur de indicateur error_reporting , soit dansphp.ini ou dans le code (probablement dans un contrôleur frontal comme index.php dans web-root comme suit:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
WordPress
Si vous travaillez dans l'environnement wordpress, Wordpress définit le niveau d'erreur dans le fichier wp-includes / load.php dans function wp_debug_mode()
. Il faut donc changer le niveau APRÈS que cette fonction ait été appelée (dans un fichier non archivé dans git donc c'est uniquement du développement), ou soit modifier directement l' error_reporting()
appel
Je n'ai pas vu de réponse propre et adaptée aux logiciels prêts pour la production, alors la voici:
/*
* Get current error_reporting value,
* so that we don't lose preferences set in php.ini and .htaccess
* and accidently reenable message types disabled in those.
*
* If you want to disable e.g. E_STRICT on a global level,
* use php.ini (or .htaccess for folder-level)
*/
$old_error_reporting = error_reporting();
/*
* Disable E_STRICT on top of current error_reporting.
*
* Note: do NOT use ^ for disabling error message types,
* as ^ will re-ENABLE the message type if it happens to be disabled already!
*/
error_reporting($old_error_reporting & ~E_STRICT);
// code that should not emit E_STRICT messages goes here
/*
* Optional, depending on if/what code comes after.
* Restore old settings.
*/
error_reporting($old_error_reporting);
E_ALL & ~E_DEPRECATED & ~E_STRICT
pour la production. Notez qu'ils vous suggèrent de désactiver les normes strictes.