Files
sistema_funcionando_lastwar/includes/error_handler.php

57 lines
2.0 KiB
PHP
Executable File

<?php
// Configuración de manejo de errores
function customErrorHandler($errno, $errstr, $errfile, $errline) {
$logFile = __DIR__ . '/../logs/php_errors.log';
// Definir los tipos de error que queremos registrar
$error_types = [
E_ERROR => 'ERROR',
E_WARNING => 'WARNING',
E_PARSE => 'PARSING ERROR',
E_NOTICE => 'NOTICE',
E_CORE_ERROR => 'CORE ERROR',
E_CORE_WARNING => 'CORE WARNING',
E_COMPILE_ERROR => 'COMPILE ERROR',
E_COMPILE_WARNING => 'COMPILE WARNING',
E_USER_ERROR => 'USER ERROR',
E_USER_WARNING => 'USER WARNING',
E_USER_NOTICE => 'USER NOTICE',
E_STRICT => 'STRICT NOTICE',
E_RECOVERABLE_ERROR => 'RECOVERABLE ERROR',
E_DEPRECATED => 'DEPRECATED',
E_USER_DEPRECATED => 'USER DEPRECATED'
];
$error_type = $error_types[$errno] ?? 'UNKNOWN';
$error_message = "[" . date('Y-m-d H:i:s') . "] $error_type: $errstr in $errfile on line $errline\n";
// Escribir en el archivo de log
error_log($error_message, 3, $logFile);
// No ejecutar el gestor de errores interno de PHP
return true;
}
// Función para registrar excepciones no capturadas
function customExceptionHandler($exception) {
$logFile = __DIR__ . '/../logs/php_errors.log';
$error_message = "[" . date('Y-m-d H:i:s') . "] EXCEPTION: " . $exception->getMessage() . " in " .
$exception->getFile() . " on line " . $exception->getLine() . "\n";
error_log($error_message, 3, $logFile);
// Mostrar un mensaje genérico al usuario
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
echo "Ha ocurrido un error inesperado. El administrador ha sido notificado.";
}
// Establecer manejadores de errores
set_error_handler('customErrorHandler');
set_exception_handler('customExceptionHandler');
// Mostrar errores en pantalla solo en entorno de desarrollo
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/../logs/php_errors.log');