Dans mon environnement de développement local, j'utilise PHP Version 5.3.3-1ubuntu9.2.
Maintenant, quand je vois error_reporting, la valeur est 22527.
Qu'est-ce que 22527?
J'ai vérifié http://www.php.net/manual/en/errorfunc.constants.php , mais je n'ai pas pu trouver le numéro.
Quelqu'un pourrait-il me dire ce que c'est?
Dois-je le changer en E_ALL | E_STRICT?
Merci d'avance.
Cette valeur est en fait masque bitmap , une somme de constantes.
Donc, 22527 est
16384 E_USER_DEPRECATED
+
4096 E_RECOVERABLE_ERROR
+
etc...
Dans votre cas, c'est E_ALL & ~E_DEPRECATED
, il affichera toutes les erreurs, sauf E_DEPRECATED
.
Les versions PHP inférieures à 5.4 excluront également E_STRICT
erreurs (depuis E_STRICT
n'est pas inclus dans E_ALL
avant cette version)
Cette valeur est un ou plusieurs de ces constantes bit-ored ensemble.
phpinfo()
affiche généralement la valeur numérique au lieu des constantes ou des raccourcis utilisés dans les fichiers INI. Voici un exemple pour mapper la valeur aux constantes :
<?php
$error_reporting_value = 22527;
$constants = array(
"E_ERROR",
"E_WARNING",
"E_PARSE",
"E_NOTICE",
"E_CORE_ERROR",
"E_CORE_WARNING",
"E_COMPILE_ERROR",
"E_COMPILE_WARNING",
"E_USER_ERROR",
"E_USER_WARNING",
"E_USER_NOTICE",
"E_STRICT",
"E_RECOVERABLE_ERROR",
"E_DEPRECATED",
"E_USER_DEPRECATED",
"E_ALL"
);
$included = array();
$excluded = array();
foreach ($constants as $constant) {
$value = constant($constant);
if (($error_reporting_value & $value) === $value) {
$included[] = $constant;
} else {
$excluded[] = $constant;
}
}
echo "error reporting " . $error_reporting_value . PHP_EOL;
echo "includes " . implode(", ", $included) . PHP_EOL;
echo "excludes " . implode(", ", $excluded) . PHP_EOL;
Production:
error reporting 22527
includes E_ERROR, E_WARNING, E_PARSE, E_NOTICE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE, E_RECOVERABLE_ERROR, E_USER_DEPRECATED
excludes E_STRICT, E_DEPRECATED, E_ALL
N'utilisez JAMAIS la valeur numérique pour définir votre rapport d'erreurs, car la signification de cette valeur peut changer mais la signification des constantes (comme E_ALL, E_STRICT, etc.) ne sera probablement pas:
Le nouveau niveau error_reporting. Il prend soit un masque de bits, soit des constantes nommées. L'utilisation de constantes nommées est fortement encouragée pour garantir la compatibilité des futures versions. Au fur et à mesure que des niveaux d'erreur sont ajoutés, la plage d'entiers augmente, de sorte que les anciens niveaux d'erreur basés sur des entiers ne se comporteront pas toujours comme prévu .
(et notez qu'à partir de PHP 5.4, E_ALL inclut désormais E_STRICT)
SI vous voulez les rapports les plus stricts pour toujours et à jamais, vous pouvez définir error_reporting sur un très grand nombre afin de garantir (?) Que vous signalerez toutes les erreurs pour toujours :
L'utilisation de PHP Les constantes en dehors de PHP, comme dans httpd.conf, n'auront aucune signification utile, dans ce cas, les valeurs entières sont requises. Et comme des niveaux d'erreur seront ajoutés au fil du temps, la valeur maximale (pour E_ALL) va probablement changer. Donc, au lieu de E_ALL , envisagez d'utiliser une valeur plus grande pour couvrir tous les champs de bits à partir de maintenant et à l'avenir, une valeur numérique comme 2147483647 (inclut toutes les erreurs, pas seulement E_ALL).
Vérifiez dans votre php.ini la valeur de error_reporting au format de constantes PHP lisible par l'homme. La fonction phpinfo () semble toujours afficher la valeur numérique plutôt que les constantes.
Mais, personnellement, je laisse php.ini avec les valeurs par défaut pour le rapport d'erreurs. Au lieu de cela, je mets simplement la fonction de rapport d'erreurs en haut du script php sur lequel je travaille pour remplacer les valeurs par défaut. par exemple.:
error_reporting(E_ALL | E_STRICT);