Log de errores en PHP

RECU-0579 (Recurso Manual)

Descripción

Es necesario crear un log de errores que permita controlar cuando se ha producido un error, de tal manera que permita corregirlo y evitar que se repita en el futuro.

En PHP necesitamos indicar, al abrir el archivo, el modo de utilización del mismo. Para crear un log, abriremos el archivo en modo 'a' (escritura al final) y escribiremos el error indicando la fecha, para simplificar el trabajo lo podemos incluir todo en una función:

<?php 
function error($numero,$texto){
 $ddf = fopen('error.log','a');
 fwrite($ddf,"[".date("r")."] Error $numero: $texto\r\n");
 fclose($ddf);
}
?>

Una vez declarada la función, sólo es necesario llamarla de la siguiente manera cuando se produzca un error php para que se guarde en error.log:

<?php 
// Si no existe la cookie sesion
if(!isset($_COOKIE['sesion'])){
// Guardamos un error
error('001','No existe la cookie de sesion');
}
?>

De esta manera, cada vez que un usuario entra a esta página sin la cookie sesión, se almacena una nueva línea en el fichero indicado:

[fecha] Error 001: No existe la cookie de sesión

Vamos a ver ahora como podemos mejorar esto de manera que además de poder grabar los errores Php, nos almacene los errores Php producidos durante la ejecución del script php. Esto lo conseguiremos indicando al interprete Zend que llame a la función error() cada vez que el código Php contenga un error con la función set_error_handler:

<?php 
set_error_handler('error');
?>

Entonces, el código completo del log de error Php queda de la siguiente manera:

<?php 
function error($numero,$texto){
$ddf = fopen('error.log','a');
fwrite($ddf,"[".date("r")."] Error $numero:$texto\r\n");
fclose($ddf);
}
set_error_handler('error');
?>

Contenidos relacionados

Pautas
Área: Desarrollo » Seguridad » Auditoría y Registro
Código Título Tipo Carácter
LIBP-0275 Diseño del log Libro de pautas Directriz Obligatoria