Bug #113
offen[Bugsink] ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/3205c590-5981-4d0d-9597-8e5f52e5c382/event/last/
Typ: NEW issue
Projekt: www-rietberg-de
Bugsink Alert
ErrorException: Warning: file_get_contents(https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&…
Automatisch erstellt durch n8n
KI-Analyse:
Hier ist die präzise Analyse des Fehlers mit den geforderten Punkten:
1. Ursache identifizieren¶
Der Fehler tritt auf, weil:
-
file_get_contents()versucht, eine externe API-URL (https://rietberg.ratsinfomanagement.net/...) abzurufen. - Die API antwortet mit einem HTTP 500 Internal Server Error, was bedeutet:
- Der externe Webservice (nicht TYPO3 selbst) hat einen internen Fehler (z. B. Datenbankproblem, ungültige Parameter, Server-Überlastung).
- Die URL enthält den Parameter
terms=Hillemeyer, der möglicherweise fehlerhafte Daten oder ein Formatproblem verursacht. - Der Parameter
&(HTML-Entity) in der URL ist inkorrekt – in HTTP-Requests muss ein einfaches&verwendet werden.
Zusätzliche Hinweise:
- Der Fehler stammt nicht aus dem TYPO3-Core, sondern aus einem benutzerdefinierten Skript (
/public/index.php, Zeile 21). - Die Middleware-Stacks von TYPO3 sind nur indirekt betroffen, da sie den Request weiterleiten, bis der Fehler im benutzerdefinierten Code auftritt.
2. Fix beschreiben (konkret)¶
A. Sofortmaßnahmen (Quick Fix)¶
-
URL-Korrektur:
Ersetze&durch&in der URL:// Vorher (falsch): $url = 'https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&terms=Hillemeyer'; // Nachher (korrekt): $url = 'https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&terms=Hillemeyer'; -
Fehlerbehandlung für
file_get_contents:
Füge eine robuste Fehlerbehandlung hinzu, um HTTP-500-Fehler abzufangen:$context = stream_context_create([ 'http' => [ 'ignore_errors' => true, // Erlaubt das Lesen der Antwort trotz HTTP 500 ] ]); $response = @file_get_contents($url, false, $context); if ($response === false) { $error = error_get_last(); throw new \RuntimeException('API-Anfrage fehlgeschlagen: ' . $error['message']); } // Prüfe den HTTP-Statuscode (falls verfügbar) if (isset($http_response_header)) { foreach ($http_response_header as $header) { if (strpos($header, 'HTTP/') === 0 && strpos($header, ' 500 ') !== false) { throw new \RuntimeException('API meldet internen Fehler (HTTP 500)'); } } } -
Alternative:
GuzzleHttpverwenden (empfohlen)
Ersetzefile_get_contentsdurch die TYPO3-integrierte HTTP-Client-Bibliothek:use TYPO3\CMS\Core\Http\RequestFactory; $requestFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(RequestFactory::class); try { $response = $requestFactory->request($url, 'GET'); if ($response->getStatusCode() !== 200) { throw new \RuntimeException('API-Fehler: HTTP ' . $response->getStatusCode()); } $data = json_decode($response->getBody()->getContents(), true); } catch (\Exception $e) { throw new \RuntimeException('API-Anfrage fehlgeschlagen: ' . $e->getMessage()); }
B. Langfristige Lösung¶
-
API-Debugging:
-
Manuell testen: Rufe die URL mit einem Tool wie Postman oder cURL auf, um den genauen Fehler der API zu ermitteln:
curl -v "https://rietberg.ratsinfomanagement.net/amtsblatt/webservice/portal/getSearch?type=0&maxOccurs=-1&terms=Hillemeyer" -
API-Dokumentation prüfen: Stelle sicher, dass die Parameter (
type=0,maxOccurs=-1,terms=Hillemeyer) gültig sind. - Server-Logs der API prüfen: Der HTTP 500 deutet auf einen Fehler im Backend der API hin (z. B. Datenbankfehler, fehlende Berechtigungen).
-
Manuell testen: Rufe die URL mit einem Tool wie Postman oder cURL auf, um den genauen Fehler der API zu ermitteln:
-
Caching einbauen:
Falls die API häufig abgefragt wird, speichere die Antwort zwischen (z. B. mit TYPO3-Caching-Framework).
3. Betroffene TYPO3 Extension¶
-
Keine Core-Extension betroffen!
Der Fehler stammt aus einem benutzerdefinierten Skript (/public/index.php), das vermutlich zu einer selbst entwickelten Extension oder einem Custom-Code gehört.-
Mögliche Kandidaten:
- Eine Extension, die Amtsblatt-Daten von der externen API abruft (z. B.
amtsblattoderratsinfo). - Ein Scheduler-Task oder Command-Controller, der die API regelmäßig abfragt.
- Eine Extension, die Amtsblatt-Daten von der externen API abruft (z. B.
-
Prüfe:
-
typo3conf/ext/nach Extensions mit ähnlichen Namen. -
typo3conf/AdditionalConfiguration.phpoderpublic/index.phpnach benutzerdefiniertem Code.
-
-
Mögliche Kandidaten:
4. Confidence¶
- 95% für die identifizierte Ursache (HTTP 500 + falsche URL-Kodierung).
- 80% für den Fix-Vorschlag (abhängig von der genauen API-Implementierung).
-
70% für die betroffene Extension (da der Code in
/public/index.phpliegt, könnte es auch ein Standalone-Skript sein).
Zusammenfassung der nächsten Schritte¶
-
URL korrigieren (
&→&). -
Fehlerbehandlung für
file_get_contentshinzufügen oder aufGuzzleHttpumstellen. - API manuell testen (Postman/cURL), um den HTTP 500 zu debuggen.
-
Benutzerdefinierten Code in
/public/index.phpoder der zugehörigen Extension prüfen.
Nichts anzuzeigen