Error de deshabilitar estándares estrictos de PHP 5


Necesito configurar mi script PHP en la parte superior para deshabilitar el informe de errores para estándares estrictos.

¿alguien Puede ayudar ?

 169
Author: Manny Calavera, 2009-08-08

7 answers

¿Desea deshabilitar el informe de errores, o simplemente evitar que el usuario lo vea? Por lo general, es una buena idea registrar los 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 el registro estándar del sistema, o use la directiva error_log para especificar exactamente dónde desea que vayan los errores.

 180
Author: Nate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-23 19:18:58

Para que no haya errores.

error_reporting(0);

O simplemente no estricto

error_reporting(E_ALL ^ E_STRICT);

Y si alguna vez desea mostrar todos los errores de nuevo, utilice

error_reporting(-1);

 89
Author: Tyler Carter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-08 14:08:04

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

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 pregunta cómo llegó el valor 30719, E_ALL (32767), E_STRICT (2048) son realmente constantes que mantienen el valor numérico y (32767 - 2048 = 30719)

 30
Author: Starx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-28 16:30:41

El valor predeterminado de la bandera error_reporting es E_ALL & ~E_NOTICE si no está establecido en php.ini. Pero en algunas instalaciones (particularmente instalaciones dirigidas a entornos de desarrollo) tiene E_ALL | E_STRICT establecido como valor de esta bandera (este es el valor recomendado durante el desarrollo). En algunos casos, especialmente cuando se desea ejecutar algunos proyectos de código abierto, que fue desarrollado antes de la era PHP 5.3 y aún no 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á recibiendo. La mejor manera de hacer frente a esta situación, es establecer solo E_ALL como el valor de error_reporting flag, ya sea en php.ini o en código (probablemente en un índice similar al controlador frontal.php en web-root como sigue:

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}
 9
Author: M N Islam Shihan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-12 19:30:10

En php.conjunto ini:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
 8
Author: MSS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-03 09:22:35

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(). Por lo tanto, 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 llamada error_reporting()

 4
Author: Nicola Peluchetti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-17 17:53:13

No vi una respuesta limpia y adecuada para 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);
 2
Author: Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-07 16:14:23