Projekt

Allgemein

Profil

Aktionen

Bug #276

offen

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

Von Bug Sink vor etwa 1 Monat hinzugefügt.

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

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/d49415f7-a40b-41a7-a538-a908c2ee7ffd/event/last/

Typ: NEW issue

Projekt: www-verl-de

Bugsink Alert

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


Automatisch erstellt durch n8n

KI-Analyse:

  1. Ursache identifizieren

Der Fehler entsteht beim synchronen HTTP-Aufruf per file_get_contents() gegen:

https://verl.ratsinfomanagement.net/webservice/portal/getSearch?type=3&maxOccurs=-1&terms=Reisepass

Der Aufruf schlägt fehl:

Failed to open stream: HTTP request failed!

Zwei Probleme sind sichtbar:

  • Die URL enthält HTML-escapete Query-Parameter: & statt &.
    • Falsch: ?type=3&maxOccurs=-1&terms=Reisepass
    • Richtig: ?type=3&maxOccurs=-1&terms=Reisepass
  • Der externe Webservice unter verl.ratsinfomanagement.net ist aus der PHP/TYPO3-Umgebung heraus nicht erfolgreich erreichbar oder liefert eine HTTP-Fehlerantwort.

Die TYPO3-Core-Frames zeigen nur den normalen Request-Lifecycle. Der eigentliche Fehler passiert sehr wahrscheinlich in einer Extension oder eigenem Code, die/der den Webservice-Aufruf auslöst. Der Core ist hier nur Ausführender Kontext, nicht Ursache.


  1. Fix konkret

A. URL korrekt bauen

Die Query-Parameter dürfen nicht als HTML-URL übergeben werden. & gehört nur in HTML-Ausgabe, nicht in eine interne HTTP-Request-URL.

Statt:

$url = 'https://verl.ratsinfomanagement.net/webservice/portal/getSearch?type=3&maxOccurs=-1&terms=Reisepass';
$data = file_get_contents($url);

besser:

$query = http_build_query([
    'type' => 3,
    'maxOccurs' => -1,
    'terms' => 'Reisepass',
], '', '&', PHP_QUERY_RFC3986);

$url = 'https://verl.ratsinfomanagement.net/webservice/portal/getSearch?' . $query;

B. Kein rohes file_get_contents() verwenden

In TYPO3 sollte für HTTP-Requests der TYPO3 RequestFactory genutzt werden.

Beispiel TYPO3 10/11/12:

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

$requestFactory = GeneralUtility::makeInstance(RequestFactory::class);

$response = $requestFactory->request(
    $url,
    'GET',
    [
        'timeout' => 10,
        'headers' => [
            'Accept' => 'application/json, application/xml, text/xml, */*',
        ],
    ]
);

if ($response->getStatusCode() >= 200 && $response->getStatusCode() < 300) {
    $body = $response->getBody()->getContents();
} else {
    throw new \RuntimeException(
        'Ratsinfo-Webservice antwortet mit HTTP ' . $response->getStatusCode(),
        1710000001
    );
}

C. Fehlerbehandlung ergänzen

Der Code sollte nicht kryptisch als Warning durchrutschen, sondern sauber abbrechen/loggen:

try {
    $response = $requestFactory->request($url, 'GET', [
        'timeout' => 10,
    ]);

    if ($response->getStatusCode() !== 200) {
        throw new \RuntimeException(
            'Ratsinfo-Webservice fehlgeschlagen: HTTP ' . $response->getStatusCode(),
            1710000002
        );
    }
} catch (\Throwable $e) {
    // Loggen und ggf. nutzerfreundliche Meldung ausgeben
    error_log($e->getMessage());

    throw new \RuntimeException(
        'Die Suche im Ratsinformationssystem ist aktuell nicht verfügbar.',
        1710000003,
        $e
    );
}

D. Serverseitige Erreichbarkeit prüfen

Von dem TYPO3-Server aus testen:

curl -v 'https://verl.ratsinfomanagement.net/webservice/portal/getSearch?type=3&maxOccurs=-1&terms=Reisepass'

Prüfen:

  • DNS-Auflösung
  • TLS/SSL-Zertifikat
  • Firewall / egress restrictions
  • Proxy-Konfiguration
  • allow_url_fopen, falls weiterhin file_get_contents() genutzt wird
  • HTTP-Status des Webservice
  • Ob der Webservice spezielle Header, API-Keys oder eine andere URL erwartet

  1. Betroffene TYPO3 Extension

Aus dem Stacktrace allein ist die Extension nicht eindeutig sichtbar, weil nur TYPO3-Core-Frames gelistet sind.

Auf Basis der URL ist aber sehr wahrscheinlich eine Extension betroffen, die das Ratsinformationssystem / Ratsinfomanagement integriert, also eine Extension vom Typ:

ratsinfo / ratsinfomanagement / ris

Sehr wahrscheinlich ist eine Extension mit einem Namen wie:

wb_ratsinfo

oder eine individuelle/custom Extension für die Anbindung an:

verl.ratsinfomanagement.net

Der konkrete Aufruf stammt nicht aus dem TYPO3-Core, sondern aus einer Extension oder eigenem Projektcode, der file_get_contents() für diesen Webservice verwendet.


  1. Confidence

85%

Begründung: Der eigentliche Fehlermechanismus ist klar erkennbar: fehlgeschlagener HTTP-Request an den Ratsinfo-Webservice, zusätzlich mit falscher URL-Encoding-Form durch &amp;. Die genaue Extension ist aus dem Stacktrace nicht direkt ableitbar, daher keine 100%-Angabe.

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF