©
This document uses PHP Chinese website manual Release
(PHP 5 >= 5.0.1)
SoapServer::fault — Issue SoapServer fault indicating an error
$code
, string $string
[, string $actor
[, string $details
[, string $name
]]] )Sends a response to the client of the current request indicating an error.
Note:
This can only be called when handling a request.
code
The error code to return
string
A brief description of the error
actor
A string identifying the actor that caused the fault.
details
More details of the fault
name
The name of the fault. This can be used to select a name from a WSDL file.
没有返回值。
[#1] christian at cmjdesign dot dk [2013-06-06 22:41:21]
hi,
to control the fault output one may do the following
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.
[#2] brian dot reynolds at risaris dot com [2012-02-21 09:44:15]
Example Usage:
return new SoapFault( "Client", "foo or bar must be supplied");
SOAP Fault Codes
VersionMismatch: Found an invalid namespace for the SOAP Envelope element
MustUnderstand : An immediate child element of the Header element, with the mustUnderstand attribute set to "1", was not understood
Client: The message was incorrectly formed or contained incorrect information
Server: There was a problem with the server so the message could not proceed
[#3] dub357 at gmail dot com [2012-02-08 20:01:33]
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>");
?>
[#4] Amr Mostafa [2009-09-09 06:16:53]
This function currently terminates execution as well, which may be undesirable. See: http://bugs.php.net/bug.php?id=49513
[#5] Anonymous [2008-07-16 00:12:39]
If 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=43507