Start · Sprachen · PHP · Referenz · RequestParseBodyException

RequestParseBodyException

Klasse

Wird ausgelöst, wenn der HTTP-Request-Body nicht erfolgreich geparst werden kann.

seit PHP 8.4.0 Kategorie: error

Signatur

class RequestParseBodyException extends RuntimeException

Beschreibung

RequestParseBodyException ist eine Ausnahme, die geworfen wird, wenn PHP beim Parsen des HTTP-Request-Bodys auf einen Fehler stößt. Dies tritt typischerweise auf, wenn request_parse_body() aufgerufen wird und der übermittelte Body-Inhalt nicht korrekt verarbeitet werden kann – etwa wegen eines ungültigen Content-Type-Headers, eines fehlerhaften Multipart-Formats oder anderer Protokollverletzungen.

Die Klasse erweitert RuntimeException und kann daher mit einem standardmäßigen try/catch-Block abgefangen werden. Eine sorgfältige Fehlerbehandlung ist besonders in APIs und Webservices wichtig, um robuste und sichere Verarbeitungslogik für Eingabedaten sicherzustellen.

Seit PHP 8.4 ermöglicht request_parse_body() das manuelle Parsen des Request-Bodys (z. B. für PUT- oder PATCH-Anfragen), was vorher nicht nativ unterstützt wurde. RequestParseBodyException ist die zugehörige Fehlerklasse für diesen Anwendungsfall.

Beispiele

Request-Body parsen mit Fehlerbehandlung

<?php
// Für PUT- oder PATCH-Requests, bei denen $_POST nicht automatisch befüllt wird
try {
    [$_POST, $_FILES] = request_parse_body();
    echo "Body erfolgreich geparst.\n";
    print_r($_POST);
} catch (\RequestParseBodyException $e) {
    http_response_code(400);
    echo "Fehler beim Parsen des Request-Bodys: " . $e->getMessage() . "\n";
}

Differenzierte Fehlerbehandlung in einer REST-API

<?php
function handlePutRequest(): void {
    try {
        [$_POST, $_FILES] = request_parse_body();
    } catch (\RequestParseBodyException $e) {
        header('Content-Type: application/json');
        http_response_code(400);
        echo json_encode([
            'error'   => 'invalid_request_body',
            'message' => $e->getMessage(),
            'code'    => $e->getCode(),
        ]);
        exit;
    }

    // Weiterverarbeitung der geparsten Daten
    $name = htmlspecialchars($_POST['name'] ?? '');
    echo "Empfangener Name: " . $name . "\n";
}

handlePutRequest();

// Wichtig · Fallstricke

Sicherheitshinweis: Nutzerinhalte aus $_POST und $_FILES, die durch request_parse_body() befüllt wurden, sollten stets validiert und sanitiert werden, bevor sie weiterverwendet werden. Eine RequestParseBodyException sollte niemals unbehandelt bleiben, da sie sonst zu einem unkontrollierten Programmabbruch führt.

Hinweis: Diese Ausnahme sowie request_parse_body() wurden in PHP 8.4 eingeführt. Bei älteren PHP-Versionen steht diese Funktionalität nicht zur Verfügung.

Der vollqualifizierte Klassenname lautet \RequestParseBodyException (im globalen Namespace).