Start · Sprachen · PHP · Referenz · use_soap_error_handler

use_soap_error_handler

Funktion

Legt fest, ob der interne SOAP-Fehlerhandler anstelle des PHP-Standardfehlerhandlers für SOAP-Fehler verwendet werden soll.

seit PHP 5.0.0 Kategorie: http

Signatur

use_soap_error_handler(bool $handler = true): bool

Beschreibung

use_soap_error_handler() steuert, welcher Fehlerhandler bei SOAP-Fehlern aktiv ist. Wird der Parameter auf true gesetzt (Standardwert), übernimmt der interne SOAP-Fehlerhandler die Verarbeitung von Fehlern und sendet diese als SOAP-Fault-Antwort an den Client. Ist er auf false gesetzt, werden Fehler über den normalen PHP-Fehlerhandler verarbeitet.

Die Funktion ist besonders hilfreich beim Debugging von SOAP-Diensten: Wenn man den SOAP-Fehlerhandler deaktiviert, werden PHP-Fehler direkt im Ausgabestrom oder im PHP-Fehlerlog ausgegeben, anstatt still als SOAP-Fault verpackt zu werden. So lassen sich Probleme auf Serverseite leichter diagnostizieren.

In Produktionsumgebungen empfiehlt es sich, den SOAP-Fehlerhandler aktiv zu lassen (true), damit Fehler standardkonform als SOAP-Faults an den Client übermittelt werden und keine internen PHP-Details nach außen gelangen. Für lokale Entwicklungsumgebungen kann false praktisch sein, um Fehler direkt sichtbar zu machen.

Parameter

Name Typ Default Beschreibung
$handler bool true Gibt an, ob der SOAP-Fehlerhandler aktiviert (true) oder deaktiviert (false) werden soll. Bei true werden Fehler als SOAP-Fault-Antworten gesendet; bei false übernimmt der Standard-PHP-Fehlerhandler.

Rückgabewert

Typ
bool
Beschreibung
Gibt den vorherigen Wert des SOAP-Fehlerhandler-Status zurück — also true, wenn der SOAP-Fehlerhandler zuvor aktiv war, oder false, wenn er deaktiviert war.

Beispiele

SOAP-Fehlerhandler für Debugging deaktivieren

<?php
// SOAP-Fehlerhandler deaktivieren, damit PHP-Fehler direkt sichtbar werden
$vorheriger_status = use_soap_error_handler(false);
echo 'Vorheriger SOAP-Fehlerhandler-Status: ' . ($vorheriger_status ? 'aktiv' : 'inaktiv') . PHP_EOL;

$client = new SoapClient('http://example.com/service?wsdl');
try {
    $result = $client->nichtVorhandeneFunktion();
} catch (SoapFault $e) {
    echo 'SOAP-Fehler: ' . $e->getMessage() . PHP_EOL;
}

// SOAP-Fehlerhandler wieder aktivieren
use_soap_error_handler(true);
Vorheriger SOAP-Fehlerhandler-Status: aktiv SOAP-Fehler: Function ("nichtVorhandeneFunktion") is not a valid method for this service

SOAP-Server mit aktiviertem Fehlerhandler für Produktion

<?php
// Sicherstellen, dass der SOAP-Fehlerhandler aktiv ist (Standard in Produktion)
use_soap_error_handler(true);

function addiere(int $a, int $b): int {
    if (!is_numeric($a) || !is_numeric($b)) {
        throw new SoapFault('Client', 'Ungültige Parameter: Nur Zahlen erlaubt.');
    }
    return $a + $b;
}

$server = new SoapServer(null, [
    'uri' => 'http://example.com/soap',
]);
$server->addFunction('addiere');
$server->handle();

// Wichtig · Fallstricke

Sicherheitshinweis: In Produktionsumgebungen sollte use_soap_error_handler(true) gesetzt bleiben. Andernfalls könnten interne PHP-Fehlermeldungen (z. B. Stack-Traces, Dateinamen, Datenbankdetails) direkt im HTTP-Ausgabestrom sichtbar werden und sensible Informationen an Angreifer preisgeben.

Hinweis zur Rückgabe: Die Funktion gibt immer den vorherigen Status zurück, was nützlich ist, um den Status nach einem lokalen Test wiederherzustellen (ähnlich dem Muster von error_reporting()).

Diese Funktion gehört zur SOAP-Erweiterung von PHP und ist nur verfügbar, wenn PHP mit --enable-soap kompiliert wurde.