This function currently terminates execution as well, which may be undesirable. See: http://bugs.php.net/bug.php?id=49513(PHP 5, PHP 7, PHP 8)
SoapServer::fault — Issue SoapServer fault indicating an error
$code,$string,$actor = "",$details = null,$name = ""Sends a response to the client of the current request indicating an error.
Зауваження:
This can only be called when handling a request.
codeThe error code to return
stringA brief description of the error
actorA string identifying the actor that caused the fault.
detailsMore details of the fault
nameThe name of the fault. This can be used to select a name from a WSDL file.
Не повертає значень.
This function currently terminates execution as well, which may be undesirable. See: http://bugs.php.net/bug.php?id=49513If you use Adobe Flex, Flash or AIR as SOAP client and are unable to get the error message in case of a soap fault, upgrade to PHP 5.2.6.
Details in:
http://bugs.php.net/bug.php?id=43507hi,
to control the fault output one may do the following
/**
* mySoapServer class
*/
class mySoapServer extends SoapServer {
public function __construct($wsdl, array $options = null) {
parent::SoapServer($wsdl, $options);
}
public function fault ($code, $string, $actor = null, $details = null, $name = null) {
throw new SoapFault($code, $string, $actor, $details, $name);
}
}
Use:
try {
$server = new mySoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('mySoapAPI');
$server->handle();
} catch (SoapFault $exc) {
echo $exc->getTraceAsString();
}
that how i did this,
hope iot can help some one.This function also sends a 500 response code back to the client with the request.
This was causing issues with an Apache Axis 1.2 client I had so I instead implemented by own fault handling:
<?php
header("Content-Type: text/xml");
header("Status: 200");
die("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\\"http://schemas.xmlsoap.org/soap/envelope/\\">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>500</faultcode>
<faultstring>".$ex->getMessage())."</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>");
?>