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 — SoapServer indica que ocurrió un fallo
$code
,$string
,$actor
= ?,$details
= ?,$name
= ?Envía una respuesta al cliente de la petición actual indicando que ocurrió un error.
Nota:
Solo puede ser llamado cuando se está procesando la petición.
code
El código de error a devolver
string
Una breve descripción del fallo
actor
Una cadena identificando el actor qeu causó el fallo.
details
Más información acerca del fallo
name
Nombre del fallo. Puede ser usado para selecionar un nombre desde el fichero WSDL.
No devuelve ningún valor.
This function currently terminates execution as well, which may be undesirable. See: http://bugs.php.net/bug.php?id=49513
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
hi,
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>");
?>
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