Oculta la información de errores y “warnings” en PHP

En ocasiones por comodidad, y sobre todo para ahorrarnos dar más información de la cuenta de cara a la seguridad y a que aparezcan mensajes de errores en la pantalla del cliente, es preferible ocultar la información de depuración que nos devuelve el intérprete PHP mediante las típicas líneas de error y warning.

La forma más cómoda para hacerlo instrucción a instrucción es el uso del prefijo @ delante de la misma. El error o warning seguirá existiendo pero no se generará una salida HTML describiéndola.

Por ejemplo, intentaremos borrar el fichero contenido en la variable $fichero

unlink($fichero);

Si el fichero no existe, aparecería un error por pantalla que si ponemos esto:

@unlink($fichero);

No aparecerá. Si la operación de borrado del fichero es para asegurarnos y si no existe hemos conseguido lo que queríamos, nos ahorraremos unas cuantas líneas de código que escribir.

Acerca de F. Javier Carazo Gil

Casi Ingeniero Informático, co-fundador y administrador de Linux Hispano, co-fundador de Red de Autores y Geometrio, puedes saber más sobre mí, mi vida laboral, mis libros, mis artículos y mi día a día en @fjcarazo y en mi perfil público de LinkedIn.
  • Pingback: Bitacoras.com

  • Keisial

    No se debe usar @unlink en lugar de unlink, a menos que estés estés comprobando el valor de retorno de unlink() para tomar la decisión que haga falta.

    Lo que quieres hacer en tu caso es desactivar la directiva display_errors en php.ini, mandando los errores exclusivamente al fichero de log, nunca a la pantalla del usuario:
    Como bien dice el manual:
    “Note: This is a feature to support your development and should never be used on production systems (e.g. systems connected to the internet). ”
    http://www.php.net/manual/es/errorfunc.configuration.php#ini.display-errors

  • http://www.jcarazo.com carazo

    @Keisial: Sé que no es la manera más ortodoxa de hacerlo y para un sistema en producción la forma es la que tu dices, pero es una alternativa más a tener en cuenta.