PHP 8.5.2 Released!

SoapServer::fault

(PHP 5, PHP 7, PHP 8)

SoapServer::faultIssue SoapServer fault indicating an error

说明

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

Sends a response to the client of the current request indicating an error.

注意:

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.

lang
The human language that the SoapFault is written in. This is only used for SOAP version 1.2.

返回值

没有返回值。

更新日志

版本 说明
8.5.0 The optional parameter lang has been added in order to be compliant with the SOAP 1.2 specification.

参见

添加备注

用户贡献的备注 4 notes

up
3
Amr Mostafa
16 years ago
This function currently terminates execution as well, which may be undesirable. See: http://bugs.php.net/bug.php?id=49513
up
0
Anonymous
17 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
12 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
-5
dub357 at gmail dot com
13 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>");
?>
To Top