2010-09-21 2 views
9

Je vérifie la configuration de mon serveur PHP et je dois régler le paramètre suivant comme suit:Les valeurs numériques des niveaux de rapports d'erreur

error_reporting mis à E_ALL & ~E_NOTICE

Cependant sur mon serveur une valeur numérique est set:

error_reporting 6135 6135

Je me demandais quel est le sens de celui-ci, et si je vraiment besoin de changer

grâce

+2

errr que le titre est confus – lock

+1

Soit rien de tout cela n'a de sens du tout, ou il est temps pour moi d'aller au lit. – JAL

Répondre

12

De l'page nous avons:

  • E_ALL a la valeur 30719 en PHP 5.3.x , 6143 en PHP 5.2.x, 2047 précédemment

  • E_NOTICE a la valeur 8

On dirait que vous utilisez PHP 5.2.x

maintenant Si vous E_ALL & ~E_NOTICE ce qui est le complément de E_NOTICE suivi au niveau du bit par bit anding avec nous E_ALL get

6143 & (~8) = 6135 
6

Les drapeaux d'erreur sont puissance de 2 entiers de sorte que vous pouvez les combiner à l'aide des opérateurs de bits. Le résultat est un nombre entier comme celui que vous voyez, donc si vous le définissez sur E_ALL & ~ E_NOTICE il finira toujours comme entier. Quels drapeaux composent la valeur 6135 dépend de votre version de php. Vous pouvez vérifier si un indicateur est contenu dans celui-ci en utilisant le bitwise et l'opérateur, par ex.

if ((error_reporting() & E_NOTICE) == E_NOTICE) { 
    echo "E_NOTICE is active"; 
} 
+0

'error_reporting() & E_NOTICE == 0' est faux.Tout d'abord, '==' a une priorité supérieure à '&' de sorte que 'error_reporting() & E_NOTICE == 0' est équivalent à' error_reporting() & (E_NOTICE == 0) '. De plus, même si vous utiliseriez '(error_reporting() & E_NOTICE) == 0', cela signifie que l'expression est vraie si la valeur de retour de' error_reporting() 'et la valeur de' E_NOTICE' n'ont pas de bits en commun. – Gumbo

+0

ah oui. ma faute. devrait être (error_reporting() & E_NOTICE) == E_NOTICE. thx et fixe –

15

Values utilisé pour les rapports d'erreurs

E_RECOVERABLE_ERROR 4096 + 
E_USER_NOTICE  1024 + 
E_USER_WARNING  512 + 
E_USER_ERROR   256 + 
E_COMPILE_WARNING  128 + 
E_COMPILE_ERROR  64 + 
E_CORE_WARNING   32 + 
E_CORE_ERROR   16 + 
E_PARSE     4 + 
E_WARNING    2 + 
E_ERROR     1 + 
        = 6135 
+0

Exactement ce que je cherchais, (bien sûr) je ne pouvais pas les trouver dans les docs de php.net. À votre santé! –

+0

agréable d'avoir celui-ci en voyant quelque chose comme 'error_reporting (7)' – JSmyth

2
foreach(
    array('E_ALL', 'E_NOTICE', '~E_NOTICE', 'E_ALL&~E_NOTICE') 
    as $s) { 
    eval("\$v=$s;"); 
    printf("%20s = dec %10u = bin %32b\n", $s, $v, $v); 
} 

résultat

  E_ALL = dec  6143 = bin     1011111111111 
     E_NOTICE = dec   8 = bin        1000 
     ~E_NOTICE = dec 4294967287 = bin 11111111111111111111111111110111 
E_ALL&~E_NOTICE = dec  6135 = bin     1011111110111 
1

Notez que error_reporting(-1); signale toutes les erreurs PHP.

0

error_reporting 6135 ne sera pas vous connecter Avis d'exécution, afin de mieux utiliser

error_reporting(E_ALL); 

suivie

ini_set('display_errors', '0'); 

Cela enregistrera toutes les erreurs y compris les avis d'exécution, mais pevent afficher dans le navigateur. Cela peut être utilisé dans toutes les versions de PHP.

Questions connexes