5.8 KiB
5.8 KiB
Lychee Upload - Troubleshooting Guide
Häufige Fehler und Lösungen
HTTP 419 - Page Expired / CSRF Token Mismatch
Symptom:
Status: 419, ReasonPhrase: 'status code 419'
Ursache:
- Fehlender oder ungültiger CSRF-Token
- Session abgelaufen
Lösung:
- ✅ Implementiert: Service holt automatisch CSRF-Token vor Login
- ✅ Implementiert: CSRF-Token wird bei jedem Request mitgesendet
- Manuell: App neu starten um neue Session zu erstellen
Content Type Unacceptable
Symptom:
{
"message": "Content type unacceptable. Content type \"html\" required",
"exception": "UnexpectedContentType"
}
Ursache:
Lychee erwartet application/x-www-form-urlencoded (HTML Form), nicht application/json
Lösung:
- ✅ BEHOBEN: Login verwendet jetzt
FormUrlEncodedContent - ✅ BEHOBEN: Album-Erstellung verwendet jetzt
FormUrlEncodedContent - ✅ Upload verwendet korrekt
multipart/form-data
Code-Beispiel:
// FALSCH (JSON)
var content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json");
// RICHTIG (Form-Data)
var formData = new Dictionary<string, string>
{
{ "username", username },
{ "password", password }
};
var content = new FormUrlEncodedContent(formData);
Authentifizierung fehlschlägt
Symptom:
[WARNING] Lychee-Authentifizierung fehlgeschlagen. Auto-Upload wird nicht funktionieren.
Mögliche Ursachen:
-
Falsche Credentials
- Prüfe
LycheeUsernameundLycheePasswordinapp.settings.json - Teste Login manuell im Webinterface
- Prüfe
-
Falsche URL
LycheeApiUrlsollte sein:https://your-domain.com(ohne/api)- Nicht:
https://your-domain.com/api
-
HTTPS-Zertifikat-Probleme
- Bei selbst-signierten Zertifikaten: Temporär deaktivieren für Tests
_httpClientHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; -
Lychee-Version
- Service ist für Lychee v4.x und v5.x getestet
- Bei älteren Versionen können API-Endpunkte abweichen
Upload schlägt fehl
Symptom:
[WARNING] ⚠️ Lychee-Upload fehlgeschlagen: img_xyz.jpg
Debugging-Schritte:
-
Logs prüfen:
[DEBUG] Error Response: { ... }Zeigt den genauen Fehler von Lychee
-
Session prüfen:
- Ist
_isAuthenticated = true? - Falls nicht: Automatisches Re-Auth sollte triggern
- Ist
-
Datei prüfen:
- Existiert die Datei?
- Ist sie lesbar?
- Ist es ein gültiges JPEG?
-
Album-ID prüfen:
- Wenn
DefaultAlbumIdgesetzt: Existiert das Album? - Teste erst ohne Album-ID
- Wenn
Debug-Modus aktivieren
Um detaillierte Logs zu sehen:
-
In
app.settings.json:{ "AppSettings": { "DebugConsoleVisible": "true" } } -
Alle Log-Level werden ausgegeben:
[DEBUG]- Detaillierte Informationen (CSRF-Token, Responses)[INFO]- Normale Operationen[WARNING]- Warnungen[ERROR]- Fehler
API-Endpunkt-Übersicht
Lychee v4.x / v5.x
| Endpunkt | Method | Content-Type | CSRF? |
|---|---|---|---|
/api/Session::login |
POST | application/x-www-form-urlencoded |
✅ Yes |
/api/Session::logout |
POST | - | ✅ Yes |
/api/Photo::add |
POST | multipart/form-data |
✅ Yes |
/api/Album::add |
POST | application/x-www-form-urlencoded |
✅ Yes |
Request-Headers (immer erforderlich)
X-CSRF-TOKEN: [token]
X-XSRF-TOKEN: [token]
Accept: application/json
X-Requested-With: XMLHttpRequest
Lychee-Konfiguration prüfen
1. API aktiviert?
Lychee-Einstellungen → API Access → Aktiviert
2. Benutzer-Rechte
Der verwendete Benutzer muss:
- Upload-Rechte haben
- Album-Erstellungsrechte haben (falls verwendet)
3. Server-Limits
Prüfe php.ini:
upload_max_filesize = 20M
post_max_size = 25M
max_execution_time = 120
Test-Kommandos
Test 1: CSRF-Token holen
curl -i https://your-lychee.com/
# Suche nach: XSRF-TOKEN Cookie oder csrf-token Meta-Tag
Test 2: Login testen
curl -X POST https://your-lychee.com/api/Session::login \
-H "X-CSRF-TOKEN: your-token" \
-H "X-XSRF-TOKEN: your-token" \
-H "Accept: application/json" \
-H "X-Requested-With: XMLHttpRequest" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin&password=yourpassword"
Test 3: Session prüfen
curl -X POST https://your-lychee.com/api/Session::info \
-H "Cookie: lychee_session=..." \
-H "Accept: application/json"
Bekannte Probleme
Problem: CSRF-Token wird nicht gefunden
Lösung:
- Stelle sicher, dass die Lychee-Hauptseite erreichbar ist
- Prüfe, ob XSRF-TOKEN Cookie gesetzt wird
- Fallback auf HTML-Parsing sollte automatisch erfolgen
Problem: Cookies werden nicht gespeichert
Lösung:
CookieContainerwird korrekt initialisiert- Prüfe
UseCookies = trueinHttpClientHandler - Bei HTTPS: Zertifikat muss gültig sein
Problem: Upload zu langsam
Lösung:
- Erhöhe
_httpClient.Timeout(aktuell: 5 Minuten) - Prüfe Netzwerkverbindung zur Lychee-Instanz
- Bei vielen Uploads: Batch-Size reduzieren
Support
Bei weiteren Problemen:
-
Logs sammeln:
- Debug-Konsole aktivieren
- Kompletten Log-Output kopieren
- Besonders
[DEBUG]und[ERROR]Zeilen
-
Lychee-Logs prüfen:
storage/logs/laravel.logauf dem Server
-
Browser-DevTools:
- Manuell im Webinterface anmelden
- Network-Tab beobachten
- Request/Response-Headers vergleichen
-
Konfiguration teilen:
{ "LycheeSettings": { "ApiUrl": "...", "Username": "...", "Password": "[REDACTED]" } }