Projekt

Allgemein

Profil

Aktionen

Bug #113

offen

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

Von Bug Sink vor etwa 2 Monaten hinzugefügt.

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

0%

Geschätzter Aufwand:

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)

  1. 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';
    
  2. 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)');
            }
        }
    }
    
  3. Alternative: GuzzleHttp verwenden (empfohlen)
    Ersetze file_get_contents durch 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

  1. 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).
  2. 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. amtsblatt oder ratsinfo).
      • Ein Scheduler-Task oder Command-Controller, der die API regelmäßig abfragt.
    • Prüfe:
      • typo3conf/ext/ nach Extensions mit ähnlichen Namen.
      • typo3conf/AdditionalConfiguration.php oder public/index.php nach benutzerdefiniertem Code.

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.php liegt, könnte es auch ein Standalone-Skript sein).

Zusammenfassung der nächsten Schritte

  1. URL korrigieren (& → &).
  2. Fehlerbehandlung für file_get_contents hinzufügen oder auf GuzzleHttp umstellen.
  3. API manuell testen (Postman/cURL), um den HTTP 500 zu debuggen.
  4. Benutzerdefinierten Code in /public/index.php oder der zugehörigen Extension prüfen.

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF