134 lines
5.1 KiB
PHP
134 lines
5.1 KiB
PHP
<?php
|
|
session_start();
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
header('Access-Control-Allow-Origin: *');
|
|
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
|
|
header('Access-Control-Allow-Headers: Content-Type');
|
|
|
|
// Función de logging mejorada
|
|
function logDebug($mensaje) {
|
|
error_log("[IMPORT_DEBUG] " . $mensaje);
|
|
}
|
|
|
|
try {
|
|
logDebug("=== INICIO DIAGNÓSTICO ===");
|
|
|
|
// 1. Verificar sesión
|
|
logDebug("Verificando sesión...");
|
|
$usuario_info = "No hay sesión";
|
|
if (isset($_SESSION['usuario_id'])) {
|
|
$usuario_info = "Usuario ID: " . $_SESSION['usuario_id'] .
|
|
", Tipo: " . ($_SESSION['tipo_usuario'] ?? 'sin_tipo');
|
|
}
|
|
logDebug("Estado sesión: " . $usuario_info);
|
|
|
|
// 2. Verificar método
|
|
logDebug("Método HTTP: " . $_SERVER['REQUEST_METHOD']);
|
|
|
|
// 3. Verificar archivo
|
|
$archivo_info = "No hay archivo";
|
|
if (isset($_FILES['archivo'])) {
|
|
$archivo_info = "Archivo: " . $_FILES['archivo']['name'] .
|
|
", Tamaño: " . $_FILES['archivo']['size'] .
|
|
", Error: " . $_FILES['archivo']['error'];
|
|
}
|
|
logDebug("Estado archivo: " . $archivo_info);
|
|
|
|
// 4. Verificar conexión a base de datos
|
|
logDebug("Verificando conexión DB...");
|
|
require_once __DIR__ . '/../config/database.php';
|
|
$conn = getConnection();
|
|
$db_info = $conn ? "Conexión exitosa" : "Error de conexión";
|
|
logDebug("Estado DB: " . $db_info);
|
|
|
|
// 5. Verificar directorio temporal
|
|
$temp_dir = __DIR__ . '/../storage/temp/';
|
|
logDebug("Directorio temp: " . $temp_dir);
|
|
logDebug("Existe directorio temp: " . (is_dir($temp_dir) ? "SÍ" : "NO"));
|
|
logDebug("Permisos escritura temp: " . (is_writable($temp_dir) ? "SÍ" : "NO"));
|
|
|
|
// Respuesta de diagnóstico
|
|
$respuesta = [
|
|
'success' => true,
|
|
'diagnostico' => 'Análisis completado',
|
|
'timestamp' => date('Y-m-d H:i:s'),
|
|
'checks' => [
|
|
'sesion' => isset($_SESSION['usuario_id']),
|
|
'usuario_id' => $_SESSION['usuario_id'] ?? null,
|
|
'tipo_usuario' => $_SESSION['tipo_usuario'] ?? null,
|
|
'metodo_post' => $_SERVER['REQUEST_METHOD'] === 'POST',
|
|
'archivo_recibido' => isset($_FILES['archivo']),
|
|
'archivo_nombre' => $_FILES['archivo']['name'] ?? null,
|
|
'archivo_error' => $_FILES['archivo']['error'] ?? null,
|
|
'conexion_db' => $conn !== false,
|
|
'directorio_temp_existe' => is_dir($temp_dir),
|
|
'directorio_temp_escribible' => is_writable($temp_dir)
|
|
],
|
|
'errores_potenciales' => []
|
|
];
|
|
|
|
// Detectar problemas
|
|
if (!isset($_SESSION['usuario_id'])) {
|
|
$respuesta['errores_potenciales'][] = "No hay usuario_id en sesión";
|
|
}
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
$respuesta['errores_potenciales'][] = "Método no es POST";
|
|
}
|
|
|
|
if (!isset($_FILES['archivo'])) {
|
|
$respuesta['errores_potenciales'][] = "No se recibió archivo";
|
|
} elseif ($_FILES['archivo']['error'] !== UPLOAD_ERR_OK) {
|
|
$respuesta['errores_potenciales'][] = "Error en upload: " . $_FILES['archivo']['error'];
|
|
}
|
|
|
|
if (!$conn) {
|
|
$respuesta['errores_potenciales'][] = "Error de conexión a base de datos";
|
|
}
|
|
|
|
if (!is_dir($temp_dir)) {
|
|
$respuesta['errores_potenciales'][] = "Directorio temporal no existe";
|
|
} elseif (!is_writable($temp_dir)) {
|
|
$respuesta['errores_potenciales'][] = "Directorio temporal no tiene permisos de escritura";
|
|
}
|
|
|
|
// Si no hay errores potenciales, intentar procesar
|
|
if (empty($respuesta['errores_potenciales']) && isset($_FILES['archivo'])) {
|
|
logDebug("Intentando procesar archivo...");
|
|
|
|
// Mover archivo temporal
|
|
$archivo_temporal = $temp_dir . 'test_' . time() . '_' . $_FILES['archivo']['name'];
|
|
if (move_uploaded_file($_FILES['archivo']['tmp_name'], $archivo_temporal)) {
|
|
$respuesta['archivo_procesado'] = true;
|
|
$respuesta['archivo_temporal'] = $archivo_temporal;
|
|
|
|
// Leer primeras líneas
|
|
$contenido = file_get_contents($archivo_temporal);
|
|
if ($contenido !== false) {
|
|
$lineas = explode("\n", array_slice(explode("\n", $contenido), 0, 5));
|
|
$respuesta['primeras_lineas'] = $lineas;
|
|
$respuesta['total_lineas'] = count(explode("\n", $contenido));
|
|
}
|
|
|
|
// Limpiar archivo
|
|
unlink($archivo_temporal);
|
|
} else {
|
|
$respuesta['errores_potenciales'][] = "No se pudo mover archivo temporal";
|
|
}
|
|
}
|
|
|
|
logDebug("Respuesta: " . json_encode($respuesta));
|
|
echo json_encode($respuesta, JSON_PRETTY_PRINT);
|
|
|
|
} catch (Exception $e) {
|
|
logDebug("EXCEPCIÓN: " . $e->getMessage());
|
|
logDebug("Stack trace: " . $e->getTraceAsString());
|
|
|
|
http_response_code(500);
|
|
echo json_encode([
|
|
'success' => false,
|
|
'error' => $e->getMessage(),
|
|
'trace' => $e->getTraceAsString()
|
|
], JSON_PRETTY_PRINT);
|
|
}
|
|
?>
|