sirve - php tutorial
Desactivar el error de pantalla PHP.ini (10)
¡Debería considerar no mostrar sus mensajes de error en su lugar!
Establezca ini_set(''display_errors'', ''Off'');
en su código php (o directamente en su ini si es posible), y deje error_reporting en E_ALL
o cualquier tipo de mensaje que le gustaría encontrar en sus registros.
De esta forma, puede manejar los errores más adelante, mientras que los usuarios aún no los ven.
Ejemplo completo:
define(''DEBUG'', true);
error_reporting(E_ALL);
if (DEBUG)
{
ini_set(''display_errors'', ''On'');
}
else
{
ini_set(''display_errors'', ''Off'');
}
O simplemente (mismo efecto):
define(''DEBUG'', true);
error_reporting(E_ALL);
ini_set(''display_errors'', DEBUG ? ''On'' : ''Off'');
Estoy tratando de desactivar todos los errores en mi sitio web. He seguido diferentes tutoriales sobre cómo hacer esto, pero sigo recibiendo mensajes de error de lectura y apertura. ¿Hay algo que este olvidando? He intentado lo siguiente en mi archivo php.ini:
;Error display
display_startup_errors = Off
display_errors = Off
html_errors = Off
docref_root = 0
docref_ext = 0
Por alguna razón, cuando hago una llamada fileopen () para un archivo que no existe, sigo recibiendo el error. Esto no es seguro para un sitio web en vivo, por razones obvias.
Gracias
¿Por qué apagar?
Puede usar error_reporting();
- http://php.net/manual/en/function.error-reporting.php o pon un @ - http://www.php.net/manual/en/language.operators.errorcontrol.php frente a tu fileopen ().
Abra su archivo php.ini (si está usando Linux - sudo vim /etc/php5/apache2/php.ini)
Agrega estas líneas en ese archivo
error_reporting = E_ALL & ~E_WARNING
(Si necesita desactivar cualquier otro error -> error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT & ~ E_NOTICE & ~ E_WARNING )
display_errors = On
Y finalmente necesita reiniciar su servidor APACHE.
En php.ini
Comentarios,
error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ER… _ERROR
error_reporting = E_ALL & ~E_NOTICE
Al colocar un ;
delante de él (es decir, como ;error_reporting = E_ALL & ~E_NOTICE
)
Para deshabilitar en un solo archivo , coloque error_reporting(0);
después de abrir una etiqueta php
.
Permítanme resumir esto rápidamente para referencia:
error_reporting()
adapta la configuración actualmente activa para el controlador de error predeterminado.La edición de las opciones ini de informe de errores también cambia los valores predeterminados.
Aquí es imperativo editar la versión
php.ini
correcta - normalmente es/etc/php5/fpm/php.ini
en servidores modernos,/etc/php5/mod_php/php.ini
alternativamente; mientras que la versión CLI tiene una distinta.Alternativamente puede usar dependiendo de SAPI:
- mod_php:
.htaccess
con opciones dephp_flag
- FastCGI: comúnmente un
php.ini
local - Y con PHP por encima de 5.3 también un
.user.ini
- mod_php:
Reiniciar el servidor web como de costumbre.
Si su código es poco manejable y de alguna manera restablece estas opciones en otro lugar durante el tiempo de ejecución, entonces una manera alternativa y rápida es definir un manejador de error personalizado que solo absorba todos los avisos / advertencias / errores:
set_error_handler(function(){});
Nuevamente, esto no es aconsejable, solo una alternativa.
Siempre uso algo como esto en un archivo de configuración:
// toggle this to change the setting
define(''DEBUG'', true);
// you want all errors to be triggered
error_reporting(E_ALL);
if(DEBUG == true)
{
// you''re developing, so you want all errors to be shown
display_errors(true);
// logging is usually overkill during dev
log_errors(false);
}
else
{
// you don''t want to display errors on a prod environment
display_errors(false);
// you definitely wanna log any occurring
log_errors(true);
}
Esto permite alternar fácilmente entre las configuraciones de depuración. Puede mejorar aún más comprobando en qué servidor se está ejecutando el código (desarrollo, prueba, aceptación, prod) y modificar su configuración en consecuencia.
Tenga en cuenta que no se registrarán errores si error_reporting se establece en 0, como ha señalado sabiamente Korri.
También puede usar el error_reporting();
PHP error_reporting();
// disable it all for current call
error_reporting(0);
Si desea ignorar los errores de una función solamente, puede anteponer un símbolo @
.
@any_function(); // errors are ignored
Usualmente utilizo los controladores de errores integrados de php que pueden manejar todos los errores posibles fuera de la sintaxis y aún así mostrar una buena página ''Abajo para el mantenimiento'' en caso contrario:
en php.ini debes probar esto para todos los errores
display_errors = On
en php.ini debes probar esto para todos los errores
error_Reporting = off