Bug #276
offen[Bugsink] ErrorException: Warning: file_get_contents(https://verl.ratsinfomanagement.net/webservice/portal/getSearch?type=3&maxOccurs=-1&terms=Reisepas…
0%
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:
- 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
- Falsch:
- Der externe Webservice unter
verl.ratsinfomanagement.netist 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.
- 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 weiterhinfile_get_contents()genutzt wird - HTTP-Status des Webservice
- Ob der Webservice spezielle Header, API-Keys oder eine andere URL erwartet
- 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.
- 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 &. Die genaue Extension ist aus dem Stacktrace nicht direkt ableitbar, daher keine 100%-Angabe.
Nichts anzuzeigen