Projekt

Allgemein

Profil

Aktionen

Bug #95

offen

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

Von Bug Sink vor 23 Tagen hinzugefügt.

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

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/93412bfd-505a-467a-bb12-397c3ea1337f/event/last/

Typ: NEW issue

Projekt: www-verl-de

Bugsink Alert

ErrorException: Warning: Undefined array key "archived"


Automatisch erstellt durch n8n

KI-Analyse:

Analyse des Fehlers: Undefined array key "archived"


1. Ursache identifizieren

Der Fehler tritt auf, weil im Code versucht wird, auf einen nicht existierenden Array-Key "archived" zuzugreifen (PHP-Warning: Undefined array key).

Kontext aus dem Stacktrace:

  • Der Fehler stammt aus /public/index.php (Zeile 20/21), wo eine Closure (anonyme Funktion) aufgerufen wird.
  • Die Ausführung läuft durch die TYPO3-Core-Middleware, aber der eigentliche Fehler liegt nicht im Core, sondern in benutzerdefiniertem Code (vermutlich eine Extension oder ein Frontend-Plugin).
  • Typische Szenarien:
    • Ein Formularfeld oder GET/POST-Parameter mit dem Namen "archived" wird erwartet, aber nicht übergeben.
    • Ein Datenbank-Record (z. B. aus tt_content, pages oder einer Custom-Table) enthält kein Feld "archived", wird aber im Code abgefragt.
    • Ein TypoScript- oder FlexForm-Wert wird falsch ausgelesen.

Wahrscheinlichste Ursache:

  • Ein Frontend-Plugin oder Controller versucht, auf $_GET['archived'], $_POST['archived'] oder ein Array aus einem Datenbank-Record zuzugreifen, ohne vorher zu prüfen, ob der Key existiert.
  • Beispiel:
    // Fehlerhafter Code (ohne Prüfung)
    $isArchived = $data['archived']; // ❌ Warning, wenn 'archived' nicht existiert
    

2. Fix beschreiben (konkret)

Lösung 1: Array-Key-Prüfung mit isset() oder array_key_exists()

// ✅ Korrekte Prüfung vor Zugriff
$isArchived = $data['archived'] ?? false; // PHP 7.4+ (Null Coalescing Operator)

oder:

$isArchived = isset($data['archived']) ? $data['archived'] : false;

Lösung 2: Default-Wert für fehlende Keys
Falls "archived" ein Datenbank-Feld ist, das optional sein kann:

// In einem Extbase-Repository oder QueryBuilder:
$query->getQuerySettings()->setIgnoreEnableFields(true); // Falls "archived" ein Hidden-Feld ist
$record = $query->execute()->getFirst();
$isArchived = $record['archived'] ?? false;

Lösung 3: TypoScript/FlexForm-Handling
Falls "archived" aus TypoScript oder FlexForm stammt:

// TypoScript:
$isArchived = (bool)$this->settings['archived'] ?? false;

// FlexForm:
$isArchived = (bool)$this->cObj->data['pi_flexform']['archived'] ?? false;

Lösung 4: Middleware/Request-Handling
Falls der Key aus GET/POST kommt:

$isArchived = (bool)($request->getQueryParams()['archived'] ?? false);

3. Betroffene TYPO3 Extension nennen

Der Fehler stammt nicht aus dem TYPO3-Core, sondern aus:

  • Einer benutzerdefinierten Extension (z. B. ext:my_custom_extension).
  • Einem Frontend-Plugin (z. B. in Classes/Controller/MyPluginController.php).
  • Einem Hook oder Middleware, das im Projekt implementiert wurde.

Wie man die Extension findet:

  1. Stacktrace analysieren:
    • Der Fehler kommt aus /public/index.php, was darauf hindeutet, dass der Code außerhalb des Core liegt.
    • Suche nach der Closure in Zeile 17 von index.php – dort wird vermutlich eine Extension initialisiert.
  2. Log-Dateien prüfen:
    • var/log/typo3_*.log oder var/log/apache2/error.log enthalten oft den vollständigen Pfad zur fehlerhaften Datei.
  3. Extension-Code durchsuchen:
    grep -r "archived" typo3conf/ext/  # Sucht nach "archived" in allen Extensions
    

Häufige Kandidaten:

  • News-Extension (ext:news) → Falls "archived" ein Custom-Feld ist.
  • Custom-Extensions mit eigenen Datenbank-Tabellen.
  • Formular-Plugins (z. B. ext:form), die GET/POST-Parameter verarbeiten.

4. Confidence (0-100%)

Aspekt Confidence
Ursache ist ein fehlender Array-Key 95%
Fehler liegt in einer Custom-Extension 90%
Nicht im TYPO3-Core 100%
Fix mit isset() oder ?? 95%
Betroffene Extension ist ext:news oder Custom-Code 80%

Gesamt-Confidence: 90%
(Der Fehler ist klar ein fehlender Array-Key, aber die genaue Extension muss noch identifiziert werden.)


Zusammenfassung & Empfehlung

  1. Prüfe den Code in /public/index.php (Zeile 17-21) – dort wird die fehlerhafte Closure aufgerufen.
  2. Suche nach archived in allen Extensions (grep -r "archived" typo3conf/ext/).
  3. Füge eine Prüfung mit isset() oder ?? ein, um den Fehler zu beheben.
  4. Falls es ein Datenbank-Feld ist, prüfe die TCA-Konfiguration (ext_tables.php oder Configuration/TCA/Overrides/).
  5. Aktiviere das TYPO3-Debugging, um den genauen Fehlerort zu finden:
    // In typo3conf/LocalConfiguration.php
    'SYS' => [
        'displayErrors' => 1,
        'devIPmask' => '*',
        'debugExceptionHandler' => 'TYPO3\CMS\Core\Error\DebugExceptionHandler',
    ],
    

Falls du den genauen Code-Ausschnitt aus der fehlerhaften Datei teilst, kann ich den Fix noch präziser anpassen!

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF