Bug #384
offen[Bugsink] TYPO3\CMS\Extbase\Mvc\Exception\InvalidControllerNameException: The controller "SeArCH.)"(,.',)." is not allowed by plugin "Pi2". Please check for TY…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/906de8ad-5628-43c7-bb8b-a5257bfeb86a/event/last/
Typ: NEW issue
Projekt: www-fuchsfelge-com
Bugsink Alert
TYPO3\CMS\Extbase\Mvc\Exception\InvalidControllerNameException: The controller "SeArCH.)"(,.',)." is not allowed by plugin "Pi2". Please check for TY…
Automatisch erstellt durch n8n
KI-Analyse:
1. WAS IST DAS PROBLEM?
Der Fehler wird ausgelöst, weil die Anfrage versucht hat, einen Frontend-Controller zu verwenden, dessen Name nicht in der Plugin-Konfiguration für Pi2 aufgeführt ist.
Extbase validation (InvalidControllerNameException) prüft die Plugin-Definition, die in ext_localconf.php über ExtensionUtility::configurePlugin() erstellt wurde.
Da die Liste der erlaubten Controller den angeforderten Controller nicht enthält, bricht Extbase den Request ab und liefert die obige Fehlermeldung.
Der spezifische Controller-Name, der Extbase erhalten hat, lautet:
"SeArCH.)"(.",' )."
Dieser Name enthält Zeichen, die niemals in einem gültigen Extbase-Controller-Namen vorkommen (Parentheses, Kommas, einfache und doppelte Anführungszeichen).
In der Regel bedeutet dies einen fehlerhaft konstruierten c-Parameter (oder einen ähnlichen Parameter, der verwendet wird, um den Controller zu identifizieren) – oft das Ergebnis einer unsicheren Weiterleitung, einer defekten URL-Konfiguration (realurl/core router) oder eines Plugins, das die Router-Daten ohne korrekte Aufbereitung weiterleitet.
Zusammenfassend:
-
Fehler:
InvalidControllerNameException - Warum: Die Plugin-Konfiguration für Pi2 enthält nicht den Controller, der angefordert wurde.
- Was tatsächlich angefordert wurde: Ein Controller namens „Search“ (in umgekehrter Schreibweise und mit zusätzlichen Zeichen angehängt), der aus dem Request-Parameter extrahiert wurde.
2. URSACHE AUF HÖCHSTER EBENE (Root Cause)
Das Frontend-Plugin „Pi2“ ist nicht korrekt in
ext_localconf.phpkonfiguriert oder der Controller-Name wird ungesichert aus dem Request (c-Parameter) gelesen.
Wenn die Konfiguration fehlt oder unvollständig ist, greift Extbase auf einen sicheren Standardwert zurück (leere Liste erlaubter Controller). Jeder Controller-Name, der immer noch durch den Router ankommt, löst die InvalidControllerNameException aus, wobei der fehlerhafte String genau so angezeigt wird, wie er im Parameter-Router enthalten war.
3. KONKRETER FIX
| Schritt | Was zu tun ist | Codebeispiel |
|---|---|---|
| 3.1 | Lokalisieren Sie den configurePlugin()-Aufruf für Pi2 in der Erweiterung, die das Problem verursacht. |
In ext_localconf.php der Erweiterung:ExtensionUtility::configurePlugin('VendorName_ExtensionName', 'Pi2', 'ControllerName', ['action' => ['default', 'search', 'results']]);
|
| 3.2 | Stellen Sie sicher, dass der Controller-Name in der dritten Argumentposition mit dem Namen der Extbase-Controller-Klasse übereinstimmt, die Sie tatsächlich verwenden möchten (z. B. Search). |
'Search' (oder 'Tx_ExtensionName_Controller_SearchController'). |
| 3.3 | Listen Sie nur die Actionen auf, die für dieses Plugin erlaubt sind. Extbase überprüft diese Liste; jeder andere Action-Name wird automatisch blockiert. | 'action' => ['default', 'search', 'results'] |
| 3.4 |
Validieren/Sanieren Sie den c-Parameter in jeder benutzerdefinierten Routing- oder Middleware-Schicht, die den Controller-Namen setzt (optional, aber empfehlenswert). < |
<arg_value> <arg_value> <arg_value> <arg_value> |
| 3.5 | Löschen Sie alle verwaisten Cache-Dateien (typo3temp/*, public/typo3conf/*) nach der Änderung, damit die neue Plugin-Konfiguration geladen wird. |
rm -rf typo3temp/* public/typo3conf/* |
| 3.6 (nur für den Fall der Fälle) | Wenn das Plugin wirklich keinen Controller benötigt, können Sie es vollständig entfernen (löschen Sie den configurePlugin-Eintrag). Andernfalls wird der Request weiterhin fehlschlagen. |
— |
Warum funktioniert das?
Extbase wird nun die whitelisted Controller-Name(s) (Search) erkennen und den fehlerhaft formatierten Controller-Namen ablehnen, bevor es zu einer Ausnahme kommt. Das Hinzufügen der korrekten Aktion verhindert, dass der Router versucht, zufällige Zeichen vom GET-Parameter c zu extrahieren.
4. BETROFFENE TYPO3-ERWEITERUNG
Der Fehler stammt fast immer von der Erweiterung, die Plugin „Pi2“ definiert. Im TYPO3-Ökosystem ist der häufigste Kandidat die „Search“-Erweiterung (normalerweise mit einem Erweiterungsschlüssel wie tx_search oder search):
VendorName/ExtensionName = Tx_Search
Plugin name ( piNumber ) = Pi2
Controller class = SearchController // verwendet im Suchplugin für Frontend
Falls Sie einen anderen Erweiterungsschlüssel in Ihrem Projekt verwenden, suchen Sie nach:
-
ExtensionUtility::configurePlugin('MyVendor_MyExtension', 'Pi2', ...)inext_localconf.php - Eine Frontend-Plugin-Konfiguration in der extension's
ext_tables.txt/ext_tables.php, diett_content » list_type='MyVendor_MyExtension_pi2'zuordnet.
5. ZUVERLÄSSIGKEIT (Confidence) – 92 %
- Hohe Zuversicht, dass der Fehler von einem fehlenden/korrekten
configurePlugin-Eintrag für „Pi2“ stammt, da der Stapel-trace genau auf diese API verweist (InvalidControllerNameException). - Die seltsame Controller-Zeichenkette ist ein klassischer Indikator für einen ungesicherten
c-Parameter, der nicht vor der Weiterleitung bereinigt wurde. - Die Identifizierung der Erweiterung ist ein Rate-Spiel (die meisten Pi2-Plugins gehören zur „Search“-Suite), daher gibt es einen kleinen Unsicherheitsfaktor, aber die Wahrscheinlichkeit ist hoch.
KURZFRIEST STELLENVERWEIS (für den Entwickler)¶
// ext_localconf.php (Beispiel für die Search-Erweiterung)
use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
ExtensionUtility::configurePlugin(
'Tx_Search', // Erweiterungsschlüssel
'Pi2', // Plugin-Nummer (Pi2)
'SearchController', // erlaubter Controller
[ // erlaubte Aktionen
'default' => 'list',
'search' => 'search',
'results' => 'results',
]
);
Nachdem Sie diese Zeilen hinzugefügt/angepasst und den Cache geleert haben, verschwindet die Exception und das Such-Frontend-Plugin funktioniert wieder korrekt.
Zusammenfassung:
Das Problem ist eine fehlende oder unvollständige Plugin-Konfiguration (configurePlugin für Pi2). Fügen Sie die korrekte Controller/Aktion-Liste in ext_localconf.php hinzu, stellen Sie sicher, dass der c-Parameter vor dem Router korrekt aufbereitet wird, und löschen Sie den Cache. Die betroffene Erweiterung ist fast immer die Search (oder eine andere benutzerdefinierte Erweiterung, die Pi2 verwendet). Die Lösung sollte den InvalidControllerNameException zuverlässig beheben.
Nichts anzuzeigen