/dev/null | wc -l"); $rutasHardcodeadas = trim($rutasHardcodeadas); echo "Rutas hardcodeadas restantes: $rutasHardcodeadas\n"; echo "Estado: " . (($rutasHardcodeadas == 0) ? "✅" : "❌") . "\n"; // Test 3: Verificar DOC_ROOT está disponible echo "\n🌍 TEST 3: VARIABLE DE ENTORNO\n"; echo str_repeat("-", 50) . "\n"; // Cargar configuración para verificar DOC_ROOT require_once 'classes/system-config.class.php'; $config = SystemConfig::getSystemConfig(); $docRoot = $config['doc_root']; echo "DOC_ROOT desde .env: $docRoot\n"; echo "Estado: " . (file_exists($docRoot) ? "✅" : "❌") . "\n"; // Test 4: Simular ejecución de cron echo "\n⚙️ TEST 4: SIMULACIÓN DE EJECUCIÓN\n"; echo str_repeat("-", 50) . "\n"; session_start(); // Simular variables de entorno para el test $_ENV['DOC_ROOT'] = $docRoot; // Probar include con DOC_ROOT dinámico $cronTest = 'crons/liberar-productos.php'; if (file_exists($cronTest)) { try { // Solo probamos los includes, no ejecutamos el cron completo $content = file_get_contents($cronTest); $includePattern = '/include_once\(\$_ENV\[.DOC_ROOT.\]\/(.*)\)/'; if (preg_match_all($includePattern, $content, $matches)) { echo "Includes encontrados en liberar-productos.php:\n"; foreach ($matches[1] as $include) { $fullPath = $docRoot . '/' . $include; echo " - $include: " . (file_exists($fullPath) ? "✅" : "❌") . "\n"; } } } catch (Exception $e) { echo "Error al probar includes: " . $e->getMessage() . " ❌\n"; } } else { echo "Archivo de prueba no encontrado ❌\n"; } echo "\n=== RESUMEN DE TESTS ===\n"; echo "✅ Rutas actualizadas: $actualizados/$total\n"; echo "✅ Rutas hardcodeadas eliminadas: $rutasHardcodeadas restantes\n"; echo "✅ DOC_ROOT disponible: " . (file_exists($docRoot) ? "Sí" : "No") . "\n"; echo "✅ Sistema portable: " . (($actualizados == $total && $rutasHardcodeadas == 0) ? "Sí" : "No") . "\n"; echo "\n=== ESTADO FINAL ===\n"; if ($actualizados == $total && $rutasHardcodeadas == 0) { echo "🎉 SISTEMA 100% PORTABLE SIN RUTAS HARDCODEADAS\n"; } else { echo "⚠️ Aún hay problemas que resolver\n"; } ?>