Edit report at http://bugs.php.net/bug.php?id=51944&edit=1
ID: 51944 Updated by: tony2...@php.net Reported by: scottij at arbor dot net Summary: One-way SOAP requests are not sent, and no error is reported -Status: Open +Status: Assigned Type: Bug Package: SOAP related Operating System: Mac OS X 10.5.8 PHP Version: 5.3.2 -Assigned To: +Assigned To: dmitry Previous Comments: ------------------------------------------------------------------------ [2010-05-28 18:38:48] scottij at arbor dot net Description: ------------ One-way soap requests appear to fail silently. A one-way soap request is a request which only defines an input message, and has no output message. When making such a soap request, the request is never sent but no errors are generated. The call just returns. My php configure line was: ./configure --with-curl --enable-exif --enable-soap --with-snmp --with-openssl Here is a sample WSDL entry that fails: <definitions name="TestSoap" targetNamespace="urn:TestSoap" xmlns:tns="urn:TestSoap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="OneWayRequest"> <part name="oneArg" type="xsd:string"/> </message> <portType name="TestSoapPort"> <operation name="OneWay"> <input message="OneWayRequest"/> </operation> </portType> <binding name="TestSoapBinding" type="tns:TestSoapPort"> <operation name="OneWay"> <soap:operation soapAction="urn:TestSoapAction"/> <input> <soap:body use="encoded" namespace="urn:TestSoap" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> </operation> </binding> <service name="TestSoapService"> <port name="TestSoapPort" binding="tns:TestSoapBinding"> <soap:address location="https://127.0.0.1/soap"/> </port> </service> </definitions> Test script: --------------- /* Using the above WSDL */ $user = 'someuser'; $password = 'password'; $client = new SoapClient($wsdl, array( "location" => "https://127.0.0.1/soap", "login" => "$user", "password" => "$password", "trace" => 1, "exceptions" => 0, "authentication" => SOAP_AUTHENTICATION_DIGEST ) ); $result = $client->OneWay('foo'); if(is_soap_fault($result)) { print "SOAP Fault: (faultcode: ($result->faultcode), " . "faultstring: ($result->faultstring))\n"; } else { print_r($result); } exit; Expected result: ---------------- The script should open a connection to the specified soap server and send a request to call the OneWay function. This does not happen. Actual result: -------------- Fails silently -- no error, no backtrace, and no output. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=51944&edit=1