2024 PHP 开发者大会日本站

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 条注释

Amr Mostafa
15 年前
此函数目前也会终止执行,这可能不理想。参见:http://bugs.php.net/bug.php?id=49513
匿名
16 年前
如果您使用 Adobe Flex、Flash 或 AIR 作为 SOAP 客户端,并且在发生 soap 错误时无法获取错误消息,请升级到 PHP 5.2.6。

详情见
http://bugs.php.net/bug.php?id=43507
christian at cmjdesign dot dk
11 年前
你好,
要控制错误输出,可以执行以下操作

/**
* mySoapServer 类
*/
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);
}
}

使用
try {
$server = new mySoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('mySoapAPI');
$server->handle();
} catch (SoapFault $exc) {
echo $exc->getTraceAsString();
}

就是这样做的,
希望对某些人有所帮助。
dub357 at gmail dot com
12 年前
此函数还会向客户端发送 500 响应代码。
这导致我使用的 Apache Axis 1.2 客户端出现问题,因此我改用自己实现的错误处理

<?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