<?php
define('error_file','error_log.html');
function error_handler($num_err, $cadena_err, $archivo_err="", $linea_err="", $contexto_err=""){
/*
(PHP 4 >= 4.0.1, PHP 5)
$num_err - nivel de error generado, como un entero.
$cadena_err - mensaje de error, como una cadena.
PHP >= 4.0.2
$archivo_err - nombre del archivo en el que se generó el error, como una cadena.
$linea_err - número de línea en la que se generó el error, como un entero.
$contexto_err - matriz que apunta a la tabla activa de símbolos en el punto en el que ocurrio el error.
*/
$errores = array (
E_ERROR => 'E_ERROR',
E_WARNING => 'E_WARNING',
E_PARSE => 'E_PARSE',
E_NOTICE => 'E_NOTICE',
E_CORE_ERROR => 'E_CORE_ERROR',
E_CORE_WARNING => 'E_CORE_WARNING',
E_COMPILE_ERROR => 'E_COMPILE_ERROR',
E_COMPILE_WARNING => 'E_COMPILE_WARNING',
E_USER_ERROR => 'E_USER_ERROR',
E_USER_WARNING => 'E_USER_WARNING',
E_USER_NOTICE => 'E_USER_NOTICE'
);
if(defined('E_STRICT'))
$errores[E_STRICT] = 'E_STRICT';// PHP > 5
if(defined('E_RECOVERABLE_ERROR'))
$errores[E_RECOVERABLE_ERRROR] = 'E_RECOVERABLE_ERRROR';// PHP > 5.2
ob_start();
echo "<strong>{$errores[$num_err]}</strong>: $cadena_err in <strong>$archivo_err</strong> on line <strong>$linea_err</strong>";
//echo date(" Y-m-d H:i:s (T)");
//PHP >= 4.0.2, para versiones anteriores habría que analizar si _GET o _POST están definidos y tienen valores
/*Si el contexto en el que ocurrieron los errores venía acompañado de variables
por el método _POST, estas se mostrarán en el error.*/
if(isset($contexto_err['_POST'])&&count($contexto_err['_POST'])>0){
echo " _POST: ";
echo"<pre>";
print_r($contexto_err['_POST']);
echo"</pre>";
}
/* Lo mismo para _GET */
if(isset($contexto_err['_GET'])&&count($contexto_err['_GET'])>0){
echo"<pre>";
echo"_GET:";
print_r($contexto_err['_GET']);
echo"</pre>";
}
echo "<br>\n";
error_log(ob_get_clean(), 3, error_file);
}
?>