2011-09-08 7 views
9

Tengo una aplicación heredada que requiere register_globals y magic_quotes_gpc para habilitarse. Tengo mi error_reporting configurado en E_ALL & ~E_DEPRECATED porque aún quiero ver las advertencias.Mensajes de desactivación de PHP 5.3 que aparecen como advertencias

Cuando ejecuto el PHP CLI me sale el siguiente

$ php -d "error_reporting=E_ALL & ~E_DEPRECATED" -v 
PHP Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0 
PHP Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0 
PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:41) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans 

¿Por qué se visualizan los mensajes de desaprobación como advertencias? ¿No deberían estar en el nivel E_DEPRECATED?

Parece que tengo para no mostrar advertencias para conseguir que se vayan

$ php -d "error_reporting=E_ALL & ~E_WARNING" -v 
PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:41) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans 

que pudiera cambiar de error_reporting a E_ALL & ~E_DEPRECATED & ~E_WARNING pero entonces no mostrarían advertencias para mi aplicación web. ¿Alguna sugerencia? ¿Tengo que usar un php.ini por separado para la CLI?

+0

Está programado como E_ADVERTENCIA. Y eso es eso. (Por cierto, ambas advertencias serían fáciles de corregir). – mario

+1

Debe apagar ambas directivas. Son malas malas ideas. –

+0

@ Ondřej Mirtes acaba de citar el OP, porque parece que se perdió la primera línea: "Tengo una aplicación heredada que requiere register_globals y magic_quotes_gpc para habilitarse". –

Respuesta

0

Se considera mejor práctica que no se use. Son E_WARNING s porque esos son el tipo de errores que los desarrolladores han decidido activar (es arbitrario usar uno versus otro en ese nivel).

Recomiendo encarecidamente que se asegure de que esas funciones estén desactivadas en su configuración o que, si no puede evitarlas, simplemente desactive esos tipos de advertencias en la configuración. De lo contrario, corre el riesgo de arruinar una solicitud de AJAX. Todos tenemos que lidiar con eso.

0

Puede que tenga un poco de suerte apagando el display of startup errors. Los errores aún deben registrarse en su registro de errores, pero no se mostrarán en el resultado de su aplicación.

+0

Tengo 'display_startup_errors = Off' y sigo recibiendo las advertencias. – ejunker

0

usted podría intentar registrar su controlador de errores con

set_error_handler("myFunc"); 

y myFunc es algo así como:

myFunc($errno,$errstr) { 
    return strpos($errstr,"register_globals")===false ? false : true; 
} 

así, si no se encuentra la cadena "register_globals", func regresa el control de errores falsos y estándar comienza, de lo contrario solo devuelve verdadero y no pasa nada.

1

LMGTFY

La mejor respuesta

[2009-09-07 08:42 UTC] [email protected] Sí. No es E_DEPRECATED, es E_WARNING y no va a cambiar.

[2010-03-23 ​​14:26 UTC] [email protected] aks at esoft dot dk> Si la documentación dice eso, entonces infórmalo como un problema separado en lugar de responder a un informe ya cerrado.

Parece que tiene que aceptar la forma de cómo se comporta.
Los cambios solo se aplicarán a v6

2

Cambie error_reporting a E_ALL & ~E_DEPRECATED & ~E_WARNING.

Luego, al comienzo de su conjunto de códigos:

error_reporting(E_ALL | E_STRICT); 

PHP comprueba iniciales han pasado y ahora tiene su entorno reportado errores completa. :)

Cuestiones relacionadas