SoapServer::fault
(PHP 5, PHP 7, PHP 8)
SoapServer::fault — Issue SoapServer fault indicating an error
说明
   public SoapServer::fault(
string
string
string
mixed
string
): void
  string
$code,string
$string,string
$actor = "",mixed
$details = null,string
$name = ""): 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.
 
返回值
没有返回值。
  +添加备注
  
用户贡献的备注 4 notes
  
  
  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  
  
  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  
  
  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.  
  
  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>");
?>