SoapServer::fault

(PHP 5, PHP 7, PHP 8)

SoapServer::faultEmet une erreur SoapServer

Description

public SoapServer::fault(
    string $code,
    string $string,
    string $actor = "",
    mixed $details = null,
    string $name = ""
): void

Envoie une réponse au client de la requête courante, avec un message d'erreur.

Note:

Cela n'est possible que durant l'exécution de la requête.

Liste de paramètres

code

Le code d'erreur à retourner.

string

Une description de l'erreur.

actor

Une chaîne identifiant l'acteur en cause.

details

Plus de détails sur la faute.

name

Le nom de l'erreur. Cela peut être utilisé pour sélectionner un nom dans un fichier WSDL.

Valeurs de retour

Aucune valeur n'est retournée.

Voir aussi

add a note add a note

User Contributed Notes 5 notes

up
1
Amr Mostafa
15 years ago
This function currently terminates execution as well, which may be undesirable. See: http://bugs.php.net/bug.php?id=49513
up
-1
Anonymous
16 years ago
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
up
-3
christian at cmjdesign dot dk
11 years ago
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.
up
-4
dub357 at gmail dot com
12 years ago
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>");
?>
up
-6
brian dot reynolds at risaris dot com
12 years ago
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
To Top