Bug #95
offen[Bugsink] ErrorException: Warning: Undefined array key "archived"
0%
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,pagesoder einer Custom-Table) enthält kein Feld"archived", wird aber im Code abgefragt. - Ein TypoScript- oder FlexForm-Wert wird falsch ausgelesen.
- Ein Formularfeld oder GET/POST-Parameter mit dem Namen
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:
-
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.
- Der Fehler kommt aus
-
Log-Dateien prüfen:
-
var/log/typo3_*.logodervar/log/apache2/error.logenthalten oft den vollständigen Pfad zur fehlerhaften Datei.
-
-
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¶
-
Prüfe den Code in
/public/index.php(Zeile 17-21) – dort wird die fehlerhafte Closure aufgerufen. -
Suche nach
archivedin allen Extensions (grep -r "archived" typo3conf/ext/). -
Füge eine Prüfung mit
isset()oder??ein, um den Fehler zu beheben. -
Falls es ein Datenbank-Feld ist, prüfe die TCA-Konfiguration (
ext_tables.phpoderConfiguration/TCA/Overrides/). -
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