• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SoapServer::fault()

    (PHP 5, PHP 7)

    Issue SoapServer fault indicating an error

    说明

    publicSoapServer::fault(string $code,string $string[,string $actor[,string $details[,string $name]]]): void

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

    Note:

    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.

    返回值

    没有返回值。

    参见

    • SoapFault::SoapFault() SoapFault constructor
    This function currently terminates execution as well, which may be undesirable. See: http://bugs.php.net/bug.php?id=49513
    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
    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.
    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>");
    ?>
    
    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