Projekt

Allgemein

Profil

Aktionen

Bug #120

offen

[Bugsink] ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch?type=2&maxOccurs=-1&terms=Sozi…

Von Bug Sink vor etwa 2 Monaten hinzugefügt.

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

0%

Geschätzter Aufwand:

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.
  • Zusätzliche Hinweise:

    • Der Parameter maxOccurs=-1 kö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.

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 curl aufrufen:

    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=-1 ungü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 GuzzleHttp statt file_get_contents).
    • Caching der Antwort einbauen, um wiederholte Anfragen zu vermeiden.

✅ 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=-1 vom 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

  1. Externen Webservice prüfen (manuell mit curl oder Browser).
  2. Parameter maxOccurs validieren (ggf. anpassen).
  3. file_get_contents() durch GuzzleHttp ersetzen (bessere Fehlerbehandlung).
  4. TYPO3-Logs analysieren, um die genaue Extension zu finden.
  5. 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

Aktionen

Auch abrufbar als: Atom PDF