ZF-7806: Local client never throws SoapFault(s)
Description
Zend_Soap_Client_Local doesn't correctly handle Soap Faults. Take the following code:
function throwException() {
throw new Exception('Exception message goes here');
}
$server = new Zend_Soap_Server(NULL, array('location' => 'http://example.com', 'uri' => 'http://example.com'));
$server->addFunction('throwException');
$server->registerFaultException('Exception');
$client = new Zend_Soap_Client_Local($server, NULL, array('location' => 'http://example.com', 'uri' => 'http://example.com'));
try {
$client->throwException();
echo ' We got past $client->throwException()';
}
catch (SoapFault $f) {
echo 'We caught a SoapFault!';
}
h4. Expected result "We caught a SoapFault!'
h4. Actual result
<?xml version="1.0" encoding="UTF-8"?>
www.w3.org/2003/05/soap-envelope">Receiver
Exception message goes here
Comments
Posted by Amr Mostafa (alienbrain) on 2009-09-09T05:58:01.000+0000
I've traced this down to the following lines in {{Zend_Soap_Server::handle()}}:
The problem is that {{$soap->fault()}} (i.e. PHP's SoapServer::fault()) terminates execution. I've submitted a PHP bug report: http://bugs.php.net/bug.php?id=49513
Posted by Rob Allen (rob) on 2012-11-20T20:53:20.000+0000
Bulk change of all issues last updated before 1st January 2010 as "Won't Fix".
Feel free to re-open and provide a patch if you want to fix this issue.