“Fatal error: SOAP-ERROR:” bei php, SoapClient und xdebug
Und wieder gibt es einmal ein Dreigestirn, welches dem Programmierer Kopfschmerzen bereitet. Neulich habe ich für ein Webshopprojekt getestet, ob die Exceptions bei einer falschen Eingabe eines Benutzernamens oder Passwortes beim Herstellen einer SOAP Verbindung mit der Klasse SoapClient richtig funktionieren.
try {
// Verbindung zum ewAcademy Server herstellen
$client = new SoapClient(
$provider['prov_url'],
array(
'trace' => 1,
"exceptions" => 1
)
);
} catch (SoapFault $exc) {
$_SESSION['soapconn']['error'][]=array(
'type' => 'Verbindungsfehler',
'message' => $exc->getMessage()
);
} catch (Exception $exc) {
$_SESSION['soapconn']['error'][]=array(
'type' => 'Allgemeiner Verbindungsfehler',
'message' => $exc->getMessage()
);
}
Im Livebetrieb hat alles wunderbar funktioniert, nur beim Debuggen kam immer bei einem falschen Passwort ein Fatal error: SOAP-ERROR:. Es war zum Mäusemelken. Alles funktionert, aber es geht nicht. Aber wo keine Lösung, da kein Problem. Diesmal war es wieder Kunstdünger und nicht Eigenmist, denn der Verursacher ist eine Unverträglichkeit zwischen xDebug und Exceptions. In diesem Fall ist es das Einfachste, dass man vor dem zu testenden Code ein xdebug_disable(); setzt und nach dem Code ein xdebug_enable();. So einfach ist das. Wenn man es weiß.