Bug #109
offen[Bugsink] ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/webservice/portal/getSearch?type=1&maxOccurs=-1&terms=Erwe…
0%
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.phpoder ein Controller). - Ein Site-Package (z. B.
Configuration/TypoScript/setup.typoscriptmit PHP-Code). - Ein Scheduler-Task oder CommandController, der den Webservice abfragt.
Empfehlung:
- Suche nach
file_get_contents(in deinem Projekt (z. B. mitgrep -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:
- Prüfe, ob der Zielserver erreichbar ist (z. B. mit
curl -v "https://rietberg.ratsinfomanagement.net/..."). - Ersetze
file_get_contents()durch GuzzleHTTP (Code-Beispiel oben). - Logge Fehler für spätere Analyse.
- Falls nötig, implementiere ein Fallback-Verhalten (z. B. Cache oder Default-Wert).
Nichts anzuzeigen