Bug #274
offen[Bugsink] ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/8d63b908-df85-4840-93db-d5b4d08faa1e/event/last/
Typ: NEW issue
Projekt: www-verl-de
Bugsink Alert
ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&…
Automatisch erstellt durch n8n
KI-Analyse:
Analyse des Fehlers¶
1. Ursache (Root Cause)¶
Der Fehler tritt auf, weil file_get_contents() mit einer fehlerhaft formatierten URL aufgerufen wird. Das entscheidende Problem liegt darin, dass die URL HTML-entity-kodierende & statt der korrekten &-Zeichen enthält:
❌ https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&terms=organigramm
✅ https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&terms=organigramm
Die & sind HTML-Entities, die in einem URL-Kontext nicht korrekt sind. file_get_contents() sendet die URL exakt so wie sie übergeben wird – der Webserver am Empfangsort kann die Query-Parameter daher nicht richtig parsen, was zum Fehler führt.
Zusätzliche mögliche Ursachen:
- Der externe Server (
rietberg.ratsinfomanagement.net) ist temporär nicht erreichbar - SSL/TLS-Zertifikatsprobleme auf dem Server
- PHP
allow_url_fopenist deaktiviert - Firewall/Proxy blockiert den outbound HTTP-Request
2. Fix (konkret)¶
Primärer Fix – URL decodieren:
Im Code, der den file_get_contents()-Aufruf macht, muss die URL vor dem Aufruf mit html_entity_decode() oder htmlspecialchars_decode() decodiert werden:
// VOR dem file_get_contents()-Aufruf:
$url = html_entity_decode($url, ENT_QUOTES | ENT_HTML5, 'UTF-8');
// oder alternativ:
$url = htmlspecialchars_decode($url, ENT_QUOTES);
$content = file_get_contents($url);
Sekundärer Fix – Robusteres HTTP-Handling:
Ersetzen Sie file_get_contents() durch einen robusteren HTTP-Client (z. B. TYPO3's eigenes HttpClient oder cURL):
// Beispiel mit TYPO3 HttpClient (empfohlen):
use TYPO3\CMS\Core\Http\HttpClientFactory;
$client = (new HttpClientFactory())->getHttpClient();
$response = $client->request('GET', $decodedUrl);
$content = $response->getBody()->getContents();
Zusätzliche Maßnahmen:
- Prüfen, ob der externe Service überhaupt eine HTML-Kodierung der URL erwartet
- Logging für Fehlerfälle implementieren (
try/catchmit aussagefähigem Logging) - Timeout und Retry-Logik einbauen
3. Betroffene TYPO3 Extension¶
Die betroffene Extension ist keine Standard-TYPO3-Core-Extension. Es handelt sich höchstwahrscheinlich um eine:
-
Benutzerdefinierte/lokale Extension (Custom Extension), die das Amtsblatt-Webservice der Stadt Rietberg (
rietberg.ratsinfomanagement.net) anbindet - Möglicherweise eine Drittanbieter-Extension aus dem deutschen Raum im Bereich Amtsblatt/Ratsservice (z. B. Erweiterungen von Anbietern wie
ratsservice,amtsblatt-portalo. Ä.)
Die Stelle, an der der Aufruf passiert (/public/index.php:21), deutet darauf hin, dass der Aufruf früh im Bootstrapping-Prozess erfolgt – möglicherweise in einem Frontend-Hook, einem Einstiegs-Skript oder einer Setup-Phase der Extension.
4. Confidence¶
85% – Die URL-Kodierung (& statt &) ist eindeutig ein Bug und die wahrscheinlichste Hauptursache. Die verbleibenden 15% berücksichtigen mögliche Netzwerk-/Serverprobleme beim externen Dienst als Mitursache.
Nichts anzuzeigen