$line) { if (strpos($line, 'logout') !== false) { echo " 📋 Zeile " . ($lineNumber + 1) . ": " . trim($line) . "\n"; } } } else { echo " ❌ Logout-Form nicht gefunden\n"; } // Prüfe Route-Verwendung if (strpos($content, '{{ route("logout") }}') !== false) { echo " ✅ Laravel Route wird verwendet\n"; } elseif (strpos($content, 'https://neonail.vogt.de.com/logout') !== false) { echo " ❌ Hardcodierte URL wird verwendet\n"; } else { echo " ❓ Unbekannte Logout-Konfiguration\n"; } } else { echo " ❌ Layout-Datei nicht gefunden\n"; } // 2. Routes prüfen echo "\n2. 🛣️ Routes prüfen...\n"; $routesPath = 'routes/web.php'; if (file_exists($routesPath)) { $content = file_get_contents($routesPath); // Zeige alle Logout-bezogenen Zeilen $lines = explode("\n", $content); $logoutLines = []; foreach ($lines as $lineNumber => $line) { if (strpos($line, 'logout') !== false) { $logoutLines[] = ($lineNumber + 1) . ": " . trim($line); } } if (!empty($logoutLines)) { echo " ✅ Logout-Routes gefunden:\n"; foreach ($logoutLines as $line) { echo " 📋 $line\n"; } } else { echo " ❌ Keine Logout-Routes gefunden\n"; } } else { echo " ❌ Routes-Datei nicht gefunden\n"; } // 3. LoginController prüfen echo "\n3. 🔐 LoginController prüfen...\n"; $controllerPath = 'app/Http/Controllers/Auth/LoginController.php'; if (file_exists($controllerPath)) { $content = file_get_contents($controllerPath); if (strpos($content, 'logout') !== false) { echo " ✅ Logout-Methode gefunden\n"; // Zeige Logout-Methode $lines = explode("\n", $content); foreach ($lines as $lineNumber => $line) { if (strpos($line, 'logout') !== false) { echo " 📋 Zeile " . ($lineNumber + 1) . ": " . trim($line) . "\n"; } } } else { echo " ❌ Logout-Methode nicht gefunden\n"; } } else { echo " ❌ LoginController nicht gefunden\n"; } // 4. Laravel Route-Liste generieren echo "\n4. 🛣️ Laravel Route-Liste generieren...\n"; try { require_once 'vendor/autoload.php'; // Laravel Bootstrap $app = require_once 'bootstrap/app.php'; $app->make('Illuminate\Contracts\Console\Kernel')->bootstrap(); // Route-Liste abrufen $routes = \Illuminate\Support\Facades\Route::getRoutes(); $logoutRoutes = []; foreach ($routes as $route) { $uri = $route->uri(); $methods = $route->methods(); $name = $route->getName(); if (strpos($uri, 'logout') !== false || strpos($name, 'logout') !== false) { $logoutRoutes[] = [ 'uri' => $uri, 'methods' => $methods, 'name' => $name ]; } } if (empty($logoutRoutes)) { echo " ❌ Keine Logout-Routes in Laravel registriert\n"; } else { echo " ✅ Logout-Routes in Laravel gefunden:\n"; foreach ($logoutRoutes as $route) { $methods = implode('|', $route['methods']); $name = $route['name'] ?: 'kein Name'; echo " 📋 $methods $uri ($name)\n"; } } } catch (Exception $e) { echo " ❌ Fehler beim Abrufen der Routes: " . $e->getMessage() . "\n"; } // 5. Cache-Status prüfen echo "\n5. 🧹 Cache-Status prüfen...\n"; $cacheFiles = [ 'bootstrap/cache/packages.php' => 'Packages Cache', 'bootstrap/cache/services.php' => 'Services Cache', 'bootstrap/cache/routes.php' => 'Routes Cache', 'bootstrap/cache/config.php' => 'Config Cache' ]; foreach ($cacheFiles as $cacheFile => $description) { if (file_exists($cacheFile)) { echo " ⚠️ Cache vorhanden: $description\n"; } else { echo " ✅ Cache geleert: $description\n"; } } // 6. Test-Logout-URLs generieren echo "\n6. 🔗 Test-Logout-URLs:\n"; $testUrls = [ 'https://neonail.vogt.de.com/logout', 'https://neonail.vogt.de.com/logout (POST)', 'https://neonail.vogt.de.com/logout (GET)', 'https://neonail.vogt.de.com/', 'https://neonail.vogt.de.com/login' ]; foreach ($testUrls as $url) { echo " 🔗 $url\n"; } // 7. Layout korrigieren (falls nötig) echo "\n7. 🔧 Layout korrigieren...\n"; $layoutPath = 'resources/views/layouts/app.blade.php'; if (file_exists($layoutPath)) { $content = file_get_contents($layoutPath); // Ersetze alle hardcodierten Logout-URLs $replacements = [ 'action="https://neonail.vogt.de.com/logout"' => 'action="{{ route("logout") }}"', 'href="https://neonail.vogt.de.com/logout"' => 'href="{{ route("logout") }}"', 'action="http://neonail.vogt.de.com/logout"' => 'action="{{ route("logout") }}"', 'href="http://neonail.vogt.de.com/logout"' => 'href="{{ route("logout") }}"' ]; $modified = false; foreach ($replacements as $old => $new) { if (strpos($content, $old) !== false) { $content = str_replace($old, $new, $content); $modified = true; echo " ✅ Ersetzt: $old → $new\n"; } } if ($modified) { file_put_contents($layoutPath, $content); echo " ✅ Layout aktualisiert\n"; } else { echo " ℹ️ Keine Änderungen nötig\n"; } } else { echo " ❌ Layout-Datei nicht gefunden\n"; } // 8. Cache leeren echo "\n8. 🧹 Cache leeren...\n"; system('php artisan cache:clear 2>/dev/null || echo " ⚠️ cache:clear übersprungen"'); system('php artisan config:clear 2>/dev/null || echo " ⚠️ config:clear übersprungen"'); system('php artisan view:clear 2>/dev/null || echo " ⚠️ view:clear übersprungen"'); system('php artisan route:clear 2>/dev/null || echo " ⚠️ route:clear übersprungen"'); echo " ✅ Cache geleert\n"; echo "\n✅ Logout-Debug abgeschlossen!\n"; echo "🔗 Testen Sie jetzt:\n"; echo "1. Klicken Sie auf Ihren Benutzernamen (oben rechts)\n"; echo "2. Wählen Sie 'Abmelden' aus dem Dropdown\n"; echo "3. Falls das nicht funktioniert, versuchen Sie direkt:\n"; echo " - https://neonail.vogt.de.com/logout\n"; echo "\n📋 Falls Problem besteht:\n"; echo "- Prüfen Sie Browser-Entwicklertools (F12) für Fehler\n"; echo "- Schauen Sie in die Laravel-Logs: tail -f storage/logs/laravel.log\n"; echo "- Teilen Sie die Debug-Ausgabe mit\n"; ?>