57 lines
2.0 KiB
PHP
Executable File
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');
|