Diagnóstico de Instalación WhatsApp Bot
Herramienta de depuración para identificar problemas
WhatsApp Bot - Diagnóstico de Instalación
Fecha: = date('Y-m-d H:i:s') ?>
═══════════════════════════════════════════
📋 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') . "
";
?>