PHP Conference Nagoya 2025

SoapServer::fault

(PHP 5, PHP 7, PHP 8)

SoapServer::faultВынуждает SoapServer вернуть ошибку

Описание

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

Отправляет клиенту ответ на текущий запрос с сообщением об ошибке.

Замечание:

Может быть вызвана только во время обработки запроса.

Список параметров

code

Код возвращаемой ошибки

string

Краткое описание ошибки

actor

Строка, идентифицирующая отправителя, вызвавшего ошибку

details

Детальная информация об ошибке

name

Имя ошибки. Может использоваться для выбора имени из WSDL-файла.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Смотрите также

Добавить

Примечания пользователей 4 notes

up
3
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
0
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
-5
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>");
?>
To Top