Diagnóstico de Instalación WhatsApp Bot

Herramienta de depuración para identificar problemas

WhatsApp Bot - Diagnóstico de Instalación
Fecha:
═══════════════════════════════════════════
📋 Test 1: Verificando extensiones PHP...
"; $requiredExtensions = ['pdo', 'pdo_mysql', 'json', 'curl', 'mbstring']; foreach ($requiredExtensions as $ext) { if (extension_loaded($ext)) { echo "
✅ Extensión '$ext': Disponible
"; } else { echo "
❌ Extensión '$ext': NO disponible
"; } } // Test 2: Verificar archivos del sistema echo "
📁 Test 2: Verificando archivos del sistema...
"; $requiredFiles = [ 'config/config.php' => 'Configuración principal', 'classes/Database.php' => 'Clase Database', 'database/schema.sql' => 'Esquema de BD', 'api/webhook.php' => 'Webhook API' ]; foreach ($requiredFiles as $file => $desc) { if (file_exists($file)) { $size = filesize($file); echo "
✅ $desc ($file): Existe ($size bytes)
"; } else { echo "
❌ $desc ($file): NO existe
"; } } // Test 3: Probar conexión a servidor MySQL echo "
🔌 Test 3: Probando conexión a servidor MySQL...
"; try { $dsn = "mysql:host={$dbHost};port={$dbPort};charset=utf8mb4"; $pdo_test = new PDO($dsn, $dbUser, $dbPass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_TIMEOUT => 5, ]); echo "
✅ Conexión al servidor MySQL: EXITOSA
"; // Obtener información del servidor $version = $pdo_test->query("SELECT VERSION()")->fetchColumn(); echo "
✅ Versión MySQL: $version
"; } catch (PDOException $e) { echo "
❌ Error de conexión: " . $e->getMessage() . "
"; echo "
💡 Posibles causas:
"; echo "
- Credenciales incorrectas
"; echo "
- MySQL no está corriendo
"; echo "
- Firewall bloqueando conexión
"; } // Test 4: Verificar acceso a base de datos específica echo "
💾 Test 4: Verificando acceso a base de datos '$dbName'...
"; try { $dsn = "mysql:host={$dbHost};port={$dbPort};dbname={$dbName};charset=utf8mb4"; $pdo_db = new PDO($dsn, $dbUser, $dbPass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_TIMEOUT => 5, ]); echo "
✅ Acceso a base de datos '$dbName': EXITOSO
"; // Verificar permisos try { $pdo_db->exec("CREATE TABLE test_permissions (id INT PRIMARY KEY)"); $pdo_db->exec("DROP TABLE test_permissions"); echo "
✅ Permisos CREATE/DROP: Disponibles
"; } catch (PDOException $e) { echo "
⚠️ Permisos limitados: " . $e->getMessage() . "
"; } // Listar tablas existentes $stmt = $pdo_db->query("SHOW TABLES"); $tables = $stmt->fetchAll(PDO::FETCH_COLUMN); if (count($tables) > 0) { echo "
📋 Tablas existentes (" . count($tables) . "):
"; foreach ($tables as $table) { echo "
- $table
"; } } else { echo "
⚠️ Base de datos vacía (sin tablas)
"; } } catch (PDOException $e) { echo "
❌ Error accediendo a BD '$dbName': " . $e->getMessage() . "
"; echo "
💡 Posibles causas:
"; echo "
- Base de datos no existe
"; echo "
- Usuario sin permisos en esta BD
"; echo "
- Nombre de BD incorrecto
"; } // Test 5: Probar carga del archivo config.php echo "
⚙️ Test 5: Probando carga de configuración...
"; try { if (file_exists('config/config.php')) { $configContent = file_get_contents('config/config.php'); // Verificar constantes principales $constants = ['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS']; foreach ($constants as $constant) { if (strpos($configContent, $constant) !== false) { echo "
✅ Constante '$constant': Definida en config
"; } else { echo "
❌ Constante '$constant': NO encontrada
"; } } // Intentar incluir config (sin ejecutar) echo "
✅ Archivo config.php: Legible
"; } else { echo "
❌ Archivo config.php: NO existe
"; } } catch (Exception $e) { echo "
❌ Error leyendo config: " . $e->getMessage() . "
"; } // Test 6: Verificar schema.sql echo "
📄 Test 6: Verificando archivo schema.sql...
"; try { if (file_exists('database/schema.sql')) { $schema = file_get_contents('database/schema.sql'); $statements = explode(';', $schema); $createTables = 0; $insertData = 0; foreach ($statements as $statement) { if (preg_match('/CREATE TABLE/i', $statement)) $createTables++; if (preg_match('/INSERT INTO/i', $statement)) $insertData++; } echo "
✅ Schema SQL: $createTables tablas, $insertData inserts
"; // Verificar tablas principales $mainTables = ['users', 'conversations', 'menus', 'system_config']; foreach ($mainTables as $table) { if (strpos($schema, "CREATE TABLE $table") !== false) { echo "
✅ Tabla '$table': Definida en schema
"; } else { echo "
⚠️ Tabla '$table': NO definida en schema
"; } } } else { echo "
❌ Archivo schema.sql: NO existe
"; } } catch (Exception $e) { echo "
❌ Error leyendo schema: " . $e->getMessage() . "
"; } echo "
═══════════════════════════════════════════
"; echo "
Diagnóstico completado: " . date('H:i:s') . "
"; ?>
🚀 Acciones sugeridas: