Projekt

Allgemein

Profil

Aktionen

Bug #109

offen

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

Von Bug Sink vor 4 Tagen hinzugefügt.

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

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/f50749c1-e1f0-4b0f-856b-7ffd27fda42e/event/last/

Typ: NEW issue

Projekt: www-rietberg-de

Bugsink Alert

ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch?type=1&maxOccurs=-1&terms=Erwe…


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=1&maxOccurs=-1&terms=Erweitertes%20F%C3%BChrungszeugnis
zu senden, aber eine HTTP 503 (Service Unavailable)-Antwort erhält.

Mögliche Gründe:

  • Der Zielserver (rietberg.ratsinfomanagement.net) ist nicht erreichbar (Wartungsmodus, Überlastung, Netzwerkproblem).
  • Die Firewall oder Sicherheitsregeln blockieren die Anfrage (z. B. IP-Sperre, Rate-Limiting).
  • Die URL ist falsch oder der Webservice ist vorübergehend deaktiviert.
  • SSL/TLS-Probleme (z. B. veraltete Zertifikate, unsichere Protokolle).
  • Timeout (der Server antwortet zu langsam, und file_get_contents() bricht ab).

Hinweis:

  • file_get_contents() ist nicht ideal für HTTP-Anfragen, da es keine Timeouts, Header oder Fehlerbehandlung unterstützt.
  • Besser wäre die Verwendung von GuzzleHTTP (Standard in TYPO3) oder cURL.

2. Fix beschreiben (konkret)

Empfohlene Lösung:
Ersetze file_get_contents() durch GuzzleHTTP (bereits in TYPO3 integriert) mit besserer Fehlerbehandlung.

Beispiel-Code (TYPO3-konform):

use TYPO3\CMS\Core\Http\RequestFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;

// URL vorbereiten
$url = 'https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch';
$queryParams = [
    'type' => 1,
    'maxOccurs' => -1,
    'terms' => 'Erweitertes Führungszeugnis',
];

try {
    /** @var RequestFactory $requestFactory */
    $requestFactory = GeneralUtility::makeInstance(RequestFactory::class);
    $response = $requestFactory->request($url, 'GET', [
        'query' => $queryParams,
        'timeout' => 10, // Timeout in Sekunden
        'headers' => [
            'Accept' => 'application/json', // Falls JSON erwartet wird
        ],
    ]);

    if ($response->getStatusCode() === 200) {
        $content = $response->getBody()->getContents();
        // Verarbeite die Antwort
    } else {
        throw new \RuntimeException('HTTP-Request fehlgeschlagen: ' . $response->getStatusCode());
    }
} catch (\Exception $e) {
    // Logge den Fehler (TYPO3 Logging)
    $this->logger->error('Webservice-Anfrage fehlgeschlagen', [
        'exception' => $e,
        'url' => $url,
    ]);
    // Fallback-Verhalten (z. B. leere Antwort oder Default-Wert)
    $content = '[]'; // Beispiel: Leeres JSON-Array
}

Alternative (falls Guzzle nicht verfügbar):
Falls aus Kompatibilitätsgründen file_get_contents() verwendet werden muss:

$context = stream_context_create([
    'http' => [
        'timeout' => 10, // Timeout in Sekunden
        'header' => "Accept: application/json\r\n",
    ],
    'ssl' => [
        'verify_peer' => true,
        'verify_peer_name' => true,
    ],
]);

$content = @file_get_contents($url, false, $context);
if ($content === false) {
    $error = error_get_last();
    throw new \RuntimeException('HTTP-Request fehlgeschlagen: ' . $error['message']);
}

3. Betroffene TYPO3 Extension nennen

Der Fehler stammt nicht aus dem TYPO3-Core, sondern aus einer benutzerdefinierten Extension oder einem Site-Package, das in /public/index.php (Zeile 21) die file_get_contents()-Anfrage stellt.

Mögliche Quellen:

  • Eine eigene Extension (z. B. ext_localconf.php oder ein Controller).
  • Ein Site-Package (z. B. Configuration/TypoScript/setup.typoscript mit PHP-Code).
  • Ein Scheduler-Task oder CommandController, der den Webservice abfragt.

Empfehlung:

  • Suche nach file_get_contents( in deinem Projekt (z. B. mit grep -r "file_get_contents(" .).
  • Prüfe, ob die Extension GuzzleHTTP oder cURL unterstützt und passe den Code an.

4. Confidence (0-100%)

Aspekt Confidence
Ursache (HTTP 503) 95%
Empfohlener Fix (GuzzleHTTP) 90%
Betroffene Extension (benutzerdefiniert) 85%
Alternative Lösung (file_get_contents mit Context) 80%

Gesamt: 90%

  • Die Analyse ist sehr wahrscheinlich korrekt, da der Fehler klar auf eine fehlgeschlagene HTTP-Anfrage hindeutet.
  • Die Lösung mit GuzzleHTTP ist der beste Ansatz für TYPO3.
  • Die betroffene Extension ist nicht Teil des TYPO3-Cores, sondern muss im Projekt identifiziert werden.

Zusammenfassung

Problem: Externe API (rietberg.ratsinfomanagement.net) antwortet mit HTTP 503 (Service Unavailable).
🔧 Lösung: Ersetze file_get_contents() durch GuzzleHTTP mit besserer Fehlerbehandlung.
📁 Betroffene Extension: Benutzerdefinierter Code (kein TYPO3-Core-Fehler).
🔍 Nächste Schritte:

  1. Prüfe, ob der Zielserver erreichbar ist (z. B. mit curl -v "https://rietberg.ratsinfomanagement.net/...").
  2. Ersetze file_get_contents() durch GuzzleHTTP (Code-Beispiel oben).
  3. Logge Fehler für spätere Analyse.
  4. Falls nötig, implementiere ein Fallback-Verhalten (z. B. Cache oder Default-Wert).

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF