<?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(), 3error_file);
    }
?>