Projekt

Allgemein

Profil

Aktionen

Bug #104

offen

[Bugsink] ErrorException: Warning: Undefined array key "uid"

Von Bug Sink vor 5 Tagen hinzugefügt.

Status:
Neu
Priorität:
wichtig
Zugewiesen an:
-
Beginn:
18.08.2026
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/bed516b7-0195-4abc-a331-98b979ee3800/event/last/

Typ: NEW issue

Projekt: www-rietberg-de

Bugsink Alert

ErrorException: Warning: Undefined array key "uid"


Automatisch erstellt durch n8n

KI-Analyse:

Analyse des Fehlers: "Undefined array key 'uid'"


1. Ursache identifizieren

Der Fehler tritt auf, weil in einem Array auf den Schlüssel "uid" zugegriffen wird, der nicht existiert. Dies passiert typischerweise in folgenden Szenarien:

  • Fehlende Datenbank-Referenz:
    Ein TYPO3-Record (z. B. eine Seite, ein Inhaltselement oder ein Datensatz) wird geladen, aber die Datenbank enthält keinen Eintrag mit der erwarteten uid. Beispiel:

    $record = $this->getRecordFromDatabase($someId);
    $uid = $record['uid']; // Fehler, wenn $record leer oder ungültig ist.
    
  • Falsche Middleware/Request-Verarbeitung:
    Der Stacktrace zeigt, dass der Fehler während der Request-Verarbeitung in der TYPO3-Core-Middleware auftritt. Mögliche Ursachen:

    • Ein Middleware (z. B. NormalizedParamsAttribute) greift auf ein Array zu, das keine uid enthält (z. B. $_SERVER oder ein Request-Parameter).
    • Ein Frontend-Request versucht, eine Seite zu laden, die nicht existiert (z. B. 404-Seite), aber der Code erwartet eine uid.
  • Extension-Code mit falscher Annahme:
    Eine benutzerdefinierte Extension greift auf ein Array zu, ohne vorher zu prüfen, ob der Schlüssel existiert. Beispiel:

    $data = $this->getSomeData();
    $uid = $data['uid']; // Fehler, wenn 'uid' nicht gesetzt ist.
    

2. Fix beschreiben (konkret)

Der Fix hängt von der genauen Ursache ab, aber hier sind generische Lösungsansätze:

A) Null-Check oder isset() vor Zugriff
// Vorher (fehlerhaft):
$uid = $record['uid'];

// Nachher (sicher):
$uid = $record['uid'] ?? null; // PHP 7.0+
// oder:
$uid = isset($record['uid']) ? $record['uid'] : null;
B) Datenbank-Record validieren

Falls der Fehler in einer Extension auftritt, die Datenbank-Records lädt:

$record = $this->getRecordFromDatabase($id);
if (empty($record) || !isset($record['uid'])) {
    throw new \RuntimeException('Record mit UID ' . $id . ' nicht gefunden.', 1623456789);
}
$uid = $record['uid'];
C) Middleware/Request-Handling anpassen

Falls der Fehler in der Middleware auftritt (z. B. NormalizedParamsAttribute):

  • Prüfen, ob der Request eine gültige Seite referenziert.
  • 404-Fehler korrekt behandeln, bevor auf uid zugegriffen wird.
D) TYPO3-Konfiguration prüfen
  • Seitenbaum: Gibt es eine Seite mit der erwarteten uid?
  • TypoScript: Wird eine falsche uid in TypoScript referenziert (z. B. page.10.uid = 999)?
  • Backend-Module: Wird im Backend auf einen nicht existierenden Datensatz zugegriffen?

3. Betroffene TYPO3 Extension

Der Stacktrace zeigt, dass der Fehler nicht direkt in einer Extension, sondern im TYPO3-Core auftritt (z. B. in NormalizedParamsAttribute). Allerdings gibt es zwei mögliche Szenarien:

Szenario Betroffene Extension Erklärung
1. Core-Fehler typo3/cms-core Der Fehler tritt in einer Core-Middleware auf (z. B. bei der Verarbeitung von Request-Parametern).
2. Extension-Fehler Benutzerdefinierte Extension Eine Extension greift auf ein Array zu, ohne uid zu prüfen, und löst damit den Fehler im Core aus.

Wahrscheinlichste Ursache:

  • Eine benutzerdefinierte Extension (oder ein Site-Package) greift auf ein Array zu, das keine uid enthält, und der Fehler wird im Core weitergereicht.
  • Alternativ: Ein Frontend-Request versucht, eine nicht existierende Seite zu laden (z. B. durch falsche URL oder gelöschte Seite).

4. Confidence (0-100%)

Ursache Confidence
Benutzerdefinierte Extension greift auf fehlende uid zu 70%
Middleware im Core verarbeitet ungültigen Request 20%
Datenbank-Record existiert nicht 10%

Begründung:

  • Der Stacktrace zeigt, dass der Fehler in der Request-Verarbeitung auftritt, aber nicht direkt im Core-Code.
  • Typische Core-Middleware (wie NormalizedParamsAttribute) greifen normalerweise nicht auf uid zu, es sei denn, eine Extension übergibt ungültige Daten.
  • Die Wahrscheinlichkeit ist hoch, dass eine Extension den Fehler auslöst (z. B. durch falsche Datenbankabfragen oder Request-Handling).

Empfohlene nächste Schritte

  1. Debugging mit Xdebug:

    • Setze einen Breakpoint in der Zeile, die den Fehler auslöst (z. B. in NormalizedParamsAttribute).
    • Prüfe, welches Array auf uid zugreift und woher es kommt.
  2. Log-Analyse:

    • Prüfe die TYPO3-Logs (var/log/typo3_*.log) auf weitere Hinweise.
    • Suche nach Einträgen wie "Attempt to access undefined array key 'uid'".
  3. Extension-Code prüfen:

    • Durchsuche alle benutzerdefinierten Extensions nach Zugriffen auf ['uid'] ohne Prüfung.
    • Beispiel-Befehl für Linux/macOS:
      grep -r "\[.*'uid'.*\]" /path/to/your/extension/
      
  4. Request simulieren:

    • Teste, ob der Fehler bei bestimmten URLs auftritt (z. B. /index.php?id=999 mit einer nicht existierenden Seite).
  5. TYPO3-Version prüfen:

    • Falls der Fehler in einer neueren TYPO3-Version auftritt, könnte es ein Core-Bug sein. Prüfe das TYPO3 Issue Tracker.

Zusammenfassung

Punkt Ergebnis
Ursache Zugriff auf nicht existierenden Array-Schlüssel uid, wahrscheinlich ausgelöst durch eine Extension.
Fix Null-Checks (isset() oder ??) einbauen oder Datenbank-Records validieren.
Betroffene Extension Wahrscheinlich eine benutzerdefinierte Extension, alternativ TYPO3-Core.
Confidence 70% (Extension-Fehler), 20% (Core-Fehler), 10% (Datenbank).

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF