Bug #299
offen[Bugsink] Exception: Cannot unset string offsets
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/1dca5b43-cd25-4a8d-aca6-2d5762d7ffd6/event/last/
Typ: NEW issue
Projekt: www-fuchsfelge-com
Bugsink Alert
Exception: Cannot unset string offsets
Automatisch erstellt durch n8n
KI-Analyse:
1. Ursache identifizieren¶
Inkompatibilität: TYPO3 Core Version <-> PHP Version
Der Fehler Error: Cannot unset string offsets tritt auf, weil TYPO3 Core Code (Vendor-Dateien) auf einem PHP 8.1+ läuft, der Code aber für PHP 8.0 oder älter geschrieben wurde.
In PHP 8.1 wurde das Verhalten von unset() auf String-Offsets geändert: Es wirft nun einen Error (fatal), statt nur eine Deprecation-Warnung zu werfen oder stillschweigend zu scheitern.
Der Stacktrace zeigt exakt die Middleware-Kette beim Bootstrapping (index.php -> AbstractApplication -> MiddlewareDispatcher -> VerifyHostHeader / NormalizedParamsAttribute). In diesen Klassen (VerifyHostHeader.php:55, NormalizedParamsAttribute.php:44) wird in älteren TYPO3-Versionen (v11.5.x < 11.5.27 / v12.0.x < 12.4.0) auf Superglobals ($_SERVER) oder Request-Attribute zugegriffen, die an bestimmten Stellen Strings statt Arrays enthalten, und anschließend versucht, Keys davon zu unsetten.
Typische Code-Stelle in NormalizedParamsAttribute (vereinfacht):
// Alt (Problem): $serverParams ist evtl. ein String (z.B. leerer String oder 'cli')
unset($serverParams['HTTP_HOST']); // Crash in PHP 8.1+
// Fix im Core: Typ-Prüfung vor unset
if (is_array($serverParams)) {
unset($serverParams['HTTP_HOST']);
}
2. Fix beschreiben (konkret)¶
Primärer Fix (Pflicht): TYPO3 Core auf patch-kompatible Version aktualisieren.
Kein Hotfix in vendor/ (wird bei composer install überschrieben), keine Extension-Anpassung nötig.
| Aktuelle Major Version | Minimale Patch-Version für PHP 8.1+ | Empfohlene Ziel-Version |
|---|---|---|
| v11 LTS | 11.5.27 (erster PHP 8.1 Support) | 11.5.36+ (aktuellster Security/Support) |
| v12 LTS | 12.4.0 (PHP 8.1 Requirement) | 12.4.18+ / 13.x |
| v10 / älter | Kein Support | Upgrade auf v11/v12 zwingend |
Schritte:
-
composer require typo3/cms-core:"^11.5.27 || ^12.4"(entsprechend deiner Major-Version) composer update typo3/cms-core --with-all-dependencies- Datenbank-Updates ausführen (
typo3/sysext/core/bin/typo3 database:updateschema/ Install Tool) - Caches leeren (
typo3/sysext/core/bin/typo3 cache:flush)
Workaround (nur temporär, falls Update blockiert):
PHP-Version auf 8.0 downgraden (EOL seit Nov 2023, nicht empfohlen).
3. Betroffene TYPO3 Extension nennen¶
typo3/cms-core (TYPO3 CMS Core)
Keine Dritt-Extension, kein Sitepackage, keine eigene Extension. Der Fehler liegt im Core-Kernel (HTTP Middleware Stack).
4. Confidence (0-100%)¶
99%
Begründung:
- Fehlermeldung (
Cannot unset string offsets) ist das Leit-Symptom für PHP 8.1 Inkompatibilität in Legacy-Codebases. - Stacktrace zeigt ausschließlich Core-Klassen (
vendor/typo3/cms-core/...), keine Custom-Code-Frames. - Betroffene Klassen (
VerifyHostHeader,NormalizedParamsAttribute) waren bekannte Hotspots für genau diesen Fix in den Changelogs von v11.5.27 / v12.4.0. - Der Fehler tritt sofort beim Bootstrap auf (Request Handling), bevor eigene Extensions geladen werden.
Nichts anzuzeigen