Pregunta

Necesito configurar mi script PHP en la parte superior para deshabilitar los informes de errores de normas estrictas.

¿Alguien puede ayudar ?

¿Fue útil?

Solución

¿Desea deshabilitar el informe de errores, o simplemente evitar que el usuario verlo? Por lo general es una buena idea para registrar los errores, incluso en un lugar 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 pueden registrar en el registro de sistema estándar, o usar la directiva error_log para especificar exactamente donde usted quiere ir a errores.

Otros consejos

Para los que no hay errores.

error_reporting(0);

o simplemente para no estrictos

error_reporting(E_ALL ^ E_STRICT);

y si alguna vez quieres para mostrar todos los errores de nuevo, el uso de

error_reporting(-1);

Todas las soluciones anteriores son correctas. Sin embargo, cuando estamos hablando de una aplicación normal de PHP, que tienen que incluir en cada página, que requiere. Una manera de resolver esto, es a través de .htaccess en la carpeta raíz. Sólo para ocultar los errores. [Pon una de las líneas en el archivo followling]

php_flag display_errors off

o

php_value display_errors 0

A continuación, para establecer el informe de errores

php_value error_reporting 30719

Si se está preguntando cómo llegó el valor 30719, E_ALL (32767), E_STRICT (2048) son en realidad constante que tienen un valor numérico y (32767 - 2048 = 30719)

El valor predeterminado de error_reporting bandera es E_ALL y ~ E_NOTICE Si no se establece en el php.ini. Pero de alguna instalación (en particular las instalaciones destinadas a los entornos de desarrollo) tiene E_ALL | E_STRICT establecer como valor de esta bandera (este es el valor recomendado durante el desarrollo ). En algunos casos, especialmente cuando usted desea ejecutar algunos proyectos de código abierto, que se desarrolló antes de PHP 5.3 era y todavía no se ha actualizado con las mejores prácticas definidas por PHP 5.3, en su entorno de desarrollo, es probable que correr en conseguir algunos mensajes como que está recibiendo. La mejor manera de hacer frente a esta situación, es fijar solamente E_ALL como el valor de error_reporting bandera, ya sea en php.ini o en código (probablemente en un controlador frontal como index.php en la web de la raíz de la siguiente manera:

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}

En conjunto php.ini:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

WordPress

Si usted trabaja en el entorno de wordpress, Wordpress establece el nivel de error en el archivo wp-includes / load.php en wp_debug_mode() función. Así que hay que cambiar el nivel después de esta función se ha llamado (no en un fichero registrado en git por lo que es el desarrollo solamente), o bien modificar directamente la llamada error_reporting()

No he visto una respuesta que está limpio y adecuado para el software listo para la 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top