Signatur
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
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);
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.