Projekt

Allgemein

Profil

Aktionen

Bug #87

offen

[Bugsink] Exception: count(): Argument #1 ($value) must be of type Countablearray, string given

Von Bug Sink vor 26 Tagen hinzugefügt.

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

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/cb6c8efc-2987-4949-a039-fe7136b6ec3a/event/last/

Typ: NEW issue

Projekt: www-rietberg-de

Bugsink Alert

Exception: count(): Argument #1 ($value) must be of type Countablearray, string given


Automatisch erstellt durch n8n

KI-Analyse:

Analyse des Fehlers

1. Ursache identifizieren

Der Fehler tritt auf, weil die PHP-Funktion count() auf eine String-Variable angewendet wird, obwohl sie nur mit Countable-Objekten oder Arrays funktioniert.

Konkrete Ursache:

  • Irgendwo im Code (vermutlich in einer Middleware oder einem Request-Handler) wird eine Variable an count() übergeben, die kein Array oder Countable-Objekt ist, sondern ein String.
  • Der Fehler tritt in der Middleware-Kette von TYPO3 auf, insbesondere in /vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php.
  • Mögliche Szenarien:
    • Eine Middleware oder ein Request-Handler erwartet ein Array (z. B. $_GET, $_POST, $_SERVER), erhält aber stattdessen einen String.
    • Eine Extension oder ein benutzerdefinierter Code gibt einen String zurück, wo ein Array erwartet wird.
    • Ein TYPO3-Kern-Update (z. B. von TYPO3 v9 auf v10/v11) hat die Typenprüfung verschärft, sodass alte Code-Stellen nun Fehler werfen.

2. Fix beschreiben (konkret)

Mögliche Lösungen:

a) Typprüfung vor count() einfügen

Falls der Fehler in eigenem Code auftritt:

// Vorher (fehlerhaft):
if (count($variable)) { ... }

// Nachher (sicher):
if (is_array($variable) || $variable instanceof \Countable) {
    if (count($variable)) { ... }
} else {
    // Fallback für Strings (z. B. leeren String als "0" behandeln)
    if (!empty($variable)) { ... }
}
b) Middleware/Extension prüfen

Falls der Fehler in einer Middleware oder Extension auftritt:

  • Debugging-Schritte:
    1. Stack-Trace analysieren (welche Middleware wirft den Fehler?).
    2. Datenquelle prüfen (z. B. $request->getQueryParams(), $request->getParsedBody()).
    3. Typumwandlung erzwingen (z. B. is_array($data) ? $data : []).
c) TYPO3-Kern-Fix (falls nötig)

Falls der Fehler im TYPO3-Kern liegt (z. B. in MiddlewareDispatcher):

  • Temporärer Workaround (nicht empfohlen für Produktion!):
    // In der betroffenen Middleware:
    $data = $request->getAttribute('someAttribute');
    if (!is_array($data) && !$data instanceof \Countable) {
        $data = [];
    }
    count($data); // Jetzt sicher
    
  • Langfristige Lösung:
    • Issue im TYPO3-Bugtracker melden (falls noch nicht vorhanden).
    • Auf ein Core-Update warten, das den Fehler behebt.

3. Betroffene TYPO3 Extension nennen

Der Fehler tritt nicht direkt in einer Extension auf, sondern in der Middleware-Kette des TYPO3-Kerns.
Allerdings könnte eine benutzerdefinierte Extension oder Middleware den Fehler auslösen, indem sie:

  • Einen String statt eines Arrays an eine TYPO3-Kern-Methode übergibt.
  • Eine Request-Attribute falsch setzt (z. B. $request->withAttribute('data', 'string') statt $request->withAttribute('data', [])).

Mögliche Kandidaten:

  • Eigene Middleware (z. B. in ext_localconf.php registriert).
  • Drittanbieter-Extensions, die mit Request-Handling arbeiten (z. B. EXT:news, EXT:form, EXT:solr).
  • Veraltete Extensions, die nicht mit neueren TYPO3-Versionen kompatibel sind.

Empfehlung:

  • Alle Extensions auf Aktualität prüfen (composer outdated).
  • Eigene Middleware debuggen (z. B. mit var_dump($request->getAttributes())).

4. Confidence (0-100%)

Aspekt Confidence
Ursache (String statt Array/Countable) 95%
Fix (Typprüfung oder Datenvalidierung) 90%
Betroffene Extension (Middleware oder Drittanbieter-Code) 80%
TYPO3-Kern als Ursache (unwahrscheinlich, aber möglich) 30%

Gesamt-Confidence: ~85%
(Der Fehler ist klar, aber die genaue Stelle muss noch debuggt werden.)


Zusammenfassung & nächste Schritte

  1. Debugging starten:
    • Stack-Trace analysieren (welche Middleware wirft den Fehler?).
    • Datenquelle prüfen (z. B. $request->getQueryParams()).
  2. Typprüfung einbauen (falls eigener Code betroffen).
  3. Extensions aktualisieren (insbesondere Middleware-basierte).
  4. Falls nötig: Workaround im TYPO3-Kern (nur temporär!).
  5. Issue im TYPO3-Bugtracker melden, falls der Fehler im Kern liegt.

Beispiel-Debugging-Code:

// In der betroffenen Middleware:
$data = $request->getAttribute('someAttribute');
var_dump(gettype($data), $data); // Prüfen, was wirklich übergeben wird
if (!is_array($data) && !$data instanceof \Countable) {
    $data = []; // Fallback
}
count($data); // Jetzt sicher

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF