2010-09-21 15 views
9

Estoy comprobando la configuración de mi servidor PHP y que tenga que configurar el siguiente parámetro de la siguiente manera:Los valores numéricos de los niveles de reporte de errores

error_reporting establece en E_ALL & ~E_NOTICE

Sin embargo en mi servidor es un valor numérico set:

error_reporting 6135 6135

me preguntaba ¿cuál es el significado de la misma, y si realmente tengo que cambiarlo

gracias

+2

errr ese título es confuso – lock

+1

O nada de esto tiene ningún sentido en absoluto, o es hora de irme a la cama. – JAL

Respuesta

12

Desde el page tenemos:

  • E_ALL tiene el valor 30719 en PHP 5.3.x , 6143 en PHP 5.2.x, 2047 previamente

  • E_NOTICE tiene el valor 8

Parece que está usando PHP 5.2.x

Ahora Si lo hace E_ALL & ~E_NOTICE Cuál es bit a bit complemento de E_NOTICE seguido de AND bit a bit con E_ALL nos obtenga

6143 & (~8) = 6135 
6

Los indicadores de error son potencia de 2 enteros para que puedas combinarlos usando los operadores de bits. El resultado es un número entero como el que ve, por lo que si lo configura en E_ALL & ~ E_NOTICE, seguirá siendo un número entero. Qué banderas comprenden el valor 6135 depende de tu versión de php. Puede verificar si una bandera está contenida dentro de ella usando el operador bit a bit, p.

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

'error_reporting() & E_NOTICE == 0' es incorrecto.En primer lugar, '==' tiene una precedencia mayor que '&', de modo que 'error_reporting() & E_NOTICE == 0' es equivalente a' error_reporting() & (E_NOTICE == 0) '. Además, incluso si usara '(error_reporting() & E_NOTICE) == 0', significa que la expresión es verdadera si el valor de retorno de' error_reporting() 'y el valor de' E_NOTICE' no tienen bits en común. – Gumbo

+0

ah sí. mi error. debería ser (error_reporting() y E_NOTICE) == E_NOTICE. thx y fijo –

15

Values utilizadas para indicar los errores

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

Exactamente lo que estaba buscando, (por supuesto) no pude encontrarlos en los documentos de php.net. ¡Aclamaciones! –

+0

bueno tener esto cuando vea algo como '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); 
} 

resultado

  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

Tenga en cuenta que error_reporting(-1); informará todos los errores de PHP.

0

error_reporting 6135 no registrará notificaciones en tiempo de ejecución, tanto mejor utilizar

error_reporting(E_ALL); 

seguido por

ini_set('display_errors', '0'); 

Esto registrará todos los errores incluidos los avisos de tiempo de ejecución, pero pevent mostrar en el navegador. Esto se puede usar en cualquier versión de PHP.

Cuestiones relacionadas