Bug #120
offen[Bugsink] ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch?type=2&maxOccurs=-1&terms=Sozi…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/d4c08b7c-f5b2-40fc-9224-ece947a8ab17/event/last/
Typ: NEW issue
Projekt: www-rietberg-de
Bugsink Alert
ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch?type=2&maxOccurs=-1&terms=Sozi…
Automatisch erstellt durch n8n
KI-Analyse:
Analyse des Fehlers¶
1. Ursache identifizieren¶
Der Fehler tritt auf, weil file_get_contents() versucht, eine externe HTTP-Anfrage an die URL
https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch?type=2&maxOccurs=-1&terms=Sozialamt
zu senden, aber der Remote-Server antwortet mit einem HTTP 500 Internal Server Error.
-
Root Cause:
- Der Zielserver (
rietberg.ratsinfomanagement.net) hat ein internes Problem (z. B. Datenbankfehler, ungültige Parameter, fehlende Berechtigungen, Timeout). - Die TYPO3-Anwendung versucht, eine Suchanfrage an ein externes Portal zu senden, aber der Webservice antwortet mit einem Fehler.
- Nicht das Problem der TYPO3-Installation selbst, sondern des externen Dienstes.
- Der Zielserver (
-
Zusätzliche Hinweise:
- Der Parameter
maxOccurs=-1könnte ein Problem verursachen (z. B. wenn der Webservice keine negativen Werte akzeptiert). - Der Fehler tritt in einem Closure (
{closure:/public/index.php:17}) auf, was auf eine benutzerdefinierte Extension oder ein Skript hindeutet.
- Der Parameter
2. Fix beschreiben (konkret)¶
Mögliche Lösungsansätze:
✅ A) Externen Dienst prüfen & Fehler beheben
-
Schritt 1: Manuell die URL im Browser oder mit
curlaufrufen:curl -v "https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch?type=2&maxOccurs=-1&terms=Sozialamt"- Prüfen, ob der Server eine detaillierte Fehlermeldung zurückgibt (z. B. in den Logs des Zielservers).
- Falls
maxOccurs=-1ungültig ist, diesen Parameter anpassen (z. B.maxOccurs=100).
-
Schritt 2: Falls der Webservice temporär nicht verfügbar ist:
-
Retry-Logik implementieren (z. B. mit
GuzzleHttpstattfile_get_contents). - Caching der Antwort einbauen, um wiederholte Anfragen zu vermeiden.
-
Retry-Logik implementieren (z. B. mit
✅ B) Fehlerbehandlung in TYPO3 verbessern
-
Schritt 1:
file_get_contents()durch eine robustere HTTP-Client-Lösung ersetzen (z. B. GuzzleHttp oder TYPO3 HttpClient):use TYPO3\CMS\Core\Http\RequestFactory; $requestFactory = GeneralUtility::makeInstance(RequestFactory::class); try { $response = $requestFactory->request( 'https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch', 'GET', [ 'query' => [ 'type' => 2, 'maxOccurs' => 100, // -1 durch gültigen Wert ersetzen 'terms' => 'Sozialamt', ], ] ); $data = $response->getBody()->getContents(); } catch (\Exception $e) { // Fehler loggen und Fallback-Logik implementieren $this->logger->error('Webservice-Anfrage fehlgeschlagen: ' . $e->getMessage()); $data = '[]'; // Leeres JSON als Fallback } -
Schritt 2: Timeouts und SSL-Zertifikatsprüfung konfigurieren:
$context = stream_context_create([ 'http' => [ 'timeout' => 10, // Timeout in Sekunden ], 'ssl' => [ 'verify_peer' => false, // Nur für Tests! (unsicher) 'verify_peer_name' => false, ], ]); $data = file_get_contents($url, false, $context);
✅ C) Parameter validieren
- Prüfen, ob
maxOccurs=-1vom Webservice unterstützt wird. Falls nicht, einen gültigen Wert verwenden (z. B.maxOccurs=100).
3. Betroffene TYPO3 Extension nennen¶
Der Fehler stammt nicht aus dem TYPO3-Core, sondern aus einer benutzerdefinierten Extension oder einem Skript in /public/index.php.
-
Mögliche Kandidaten:
- Eine eigene Extension, die den Webservice anbindet (z. B. für ein Ratsinformationssystem).
- Ein Custom-Plugin oder Middleware, das die Anfrage auslöst.
- Ein Scheduler-Task oder Command-Controller, der im Hintergrund läuft.
🔍 Empfehlung:
- Den Code in
/public/index.php(Zeile 17–21) prüfen, um die genaue Extension zu identifizieren. - In den TYPO3-Logs (
var/log/typo3_*.log) nach weiteren Hinweisen suchen.
4. Confidence (0-100%)¶
| Aspekt | Confidence |
|---|---|
| Root Cause (HTTP 500 vom externen Dienst) | 95% |
| Fix (GuzzleHttp + Fehlerbehandlung) | 90% |
| Betroffene Extension (benutzerdefiniert) | 80% |
Parameter-Problem (maxOccurs=-1) |
70% |
Gesamt-Confidence: 85%
(Der Fehler ist klar identifiziert, aber die genaue Extension muss noch lokalisiert werden.)
Zusammenfassung der nächsten Schritte¶
-
Externen Webservice prüfen (manuell mit
curloder Browser). -
Parameter
maxOccursvalidieren (ggf. anpassen). -
file_get_contents()durchGuzzleHttpersetzen (bessere Fehlerbehandlung). - TYPO3-Logs analysieren, um die genaue Extension zu finden.
- Fallback-Logik implementieren, falls der Webservice nicht verfügbar ist.
Falls der externe Dienst nicht repariert werden kann, sollte eine Alternative (z. B. lokale Datenhaltung oder ein anderer Webservice) in Betracht gezogen werden.
Nichts anzuzeigen