Necesito configurar mi script PHP en la parte superior para deshabilitar los informes de errores para estándares estrictos.
¿Alguien puede ayudar?
Necesito configurar mi script PHP en la parte superior para deshabilitar los informes de errores para estándares estrictos.
¿Alguien puede ayudar?
Respuestas:
¿Desea deshabilitar los informes de errores o simplemente evitar que el usuario los vea? Por lo general, es una buena idea registrar errores, incluso en un sitio de producción.
# in your PHP code:
ini_set('display_errors', '0'); # don't show any errors...
error_reporting(E_ALL | E_STRICT); # ...but do log them
Se registrarán en su registro estándar del sistema, o usarán la error_log
directiva para especificar exactamente dónde desea que vayan los errores.
php.ini
archivo, por ejemplo, si no puede modificar el código PHP.
php.ini
o .htaccess
en algún lugar de mi código PHP.
Para no errores.
error_reporting(0);
o simplemente no es estricto
error_reporting(E_ALL ^ E_STRICT);
y si alguna vez quieres volver a mostrar todos los errores, usa
error_reporting(-1);
^
solo es bueno para omitir un tipo de error. Si desea desactivar tipos adicionales, debe usar el E_ALL & ~E_DEPRECATED & ~E_STRICT
formato. O tal vez el (E_ALL & ~(E_DEPRECATED | E_STRICT))
formato.
ini_set('error_reporting', E_ALL&~E_STRICT);
Suprimir informes de errores STRICT en PHP> = 5.4ini_set('error_reporting', E_ALL^E_STRICT);
^
("xor") en lugar de & ~
("and not") es una mala idea ! ^
depende de la suposición de que, por ejemplo, E_STRICT es parte de E_ALL y siempre lo será. Esto es malo porque E_ALL cambió en el pasado (E_STRICT no era pasado de eso, pero ahora es desde PHP 5.4). Si la suposición falla un día, ^
no solo se romperá, sino que hará lo contrario de lo que se supone que debe hacer: habilitará E_STRICT debido a cómo funciona XOR ( ^
). & ~
sin embargo, siempre deshabilitará E_STRICT, sin importar el valor actual de E_ALL. Por & ~
lo tanto, debe ser utilizado.
Todas las soluciones anteriores son correctas. Pero, cuando hablamos de una aplicación PHP normal, tienen que incluirse en cada página que requiera. Una forma de resolver esto es a través .htaccess
de la carpeta raíz. Solo para ocultar los errores. [Ponga una de las siguientes líneas en el archivo]
php_flag display_errors off
O
php_value display_errors 0
A continuación, para configurar el informe de errores.
php_value error_reporting 30719
Si se pregunta cómo 30719
surgió el valor , E_ALL (32767), E_STRICT (2048) son realmente constantes y tienen un valor numérico y ( 32767 - 2048 = 30719
)
php_admin_value error_reporting
que esto funcionara (en la configuración de vhost).
El valor predeterminado del indicador error_reporting es E_ALL & ~ E_NOTICE si no está configurado en php.ini. Pero en algunas instalaciones (particularmente las instalaciones destinadas a entornos de desarrollo) tiene E_ALL | E_STRICT establecido como valor de este indicador (este es el valor recomendado durante el desarrollo ). En algunos casos, especialmente cuando desee ejecutar algunos proyectos de código abierto, que se desarrolló antes de la era de PHP 5.3 y aún no está actualizado con las mejores prácticas definidas por PHP 5.3, en su entorno de desarrollo, probablemente se encontrará con algunos mensajes como los que estás recibiendo. La mejor manera de hacer frente a esta situación es establecer solo E_ALL como el valor del indicador de informe de error , ya sea enphp.ini o en código (probablemente en un controlador frontal como index.php en web-root de la siguiente manera:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
WordPress
Si trabaja en el entorno de wordpress, Wordpress establece el nivel de error en el archivo wp-includes / load.php en función wp_debug_mode()
. Entonces, debe cambiar el nivel DESPUÉS de que se haya llamado a esta función (en un archivo no registrado en git, por lo que solo es desarrollo), o bien modificar directamente la error_reporting()
llamada
No vi una respuesta limpia y adecuada para el software listo para producción, así que aquí va:
/*
* 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
para producción. Tenga en cuenta que sugieren que deshabilite estándares estrictos.