php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #31993 SoapServer::handle() stops the script
Submitted: 2005-02-16 09:39 UTC Modified: 2005-06-28 01:00 UTC
Votes:6
Avg. Score:5.0 ± 0.0
Reproduced:5 of 5 (100.0%)
Same Version:2 (40.0%)
Same OS:2 (40.0%)
From: cfendt at silicom dot fr Assigned: dmitry (profile)
Status: No Feedback Package: SOAP related
PHP Version: 5CVS-2005-03-29 OS: WinXp, Mac OS X
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: cfendt at silicom dot fr
New email:
PHP Version: OS:

 

 [2005-02-16 09:39 UTC] cfendt at silicom dot fr
Description:
------------
Hello,

I try to make some DB work after a SoapServer::handle()... but the script ends!

on the output, we can see the soapFault dump, but no "<!-- Alive!!!! -->"...

I try it on Win 5.0.1, Win 5.0.3, Win 5.0-CVS (15/2/2005), Win 5.1-CVS (15/2/2005), OS X 5.0.1 (build from source), OS X 5.0.3 (build from source)

Reproduce code:
---------------
<?php
  $server = new SoapServer(null, 
    array('uri' => "http://test-uri/"));
  $server->handle("");
  echo "\r\n<!-- Alive!!!! -->\r\n";
?>

Expected result:
----------------
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Server</faultcode>
      <faultstring>Bad Request</faultstring>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<!-- Alive!!!! -->

Actual result:
--------------
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Server</faultcode>
      <faultstring>Bad Request</faultstring>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-02-17 09:53 UTC] cfendt at silicom dot fr
In fact, I use a WSDL file...

CODE :

<?php
class web_service {
  function sayHello($input) {
    return "Hello, ".$input."...";
  }
}

$soap_query =
   "<soapenv:Envelope
xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>"
 . "  <soapenv:Body>"
 . "    <m:sayHello xmlns:m='http://localhost/test.php'>"
 . "      <m:login>toto</m:login>"
 . "    </m:sayHello>"
 . "  </soapenv:Body>"
 . "</soapenv:Envelope>";

$server = new SoapServer("./test.wsdl");
$server->setclass("web_service");
$server->handle($soap_query);
echo "\r\nAlive!!!!\r\n";
$server->handle("");
echo "\r\nAlive!!!!\r\n";
?>

WSDL :

<?xml version="1.0"?>
<wsdl:definitions
       xmlns:tns="urn:TEST"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:typens="urn:TEST"
      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/"
 targetNamespace="urn:TEST"
            name="TEST">
	<message name="sayHelloInputMessage">
		<part name="login"       type="xsd:string"/>
	</message>
	<message name="sayHelloOutputMessage">
		<part name="hello"       type="xsd:string"/>
	</message>
	<portType name="TESTPorts">
		<operation name="sayHello">
			<input  message="typens:sayHelloInputMessage"/>
			<output message="typens:sayHelloOutputMessage"/>
		</operation>
	</portType>
	<binding name="TESTBinding" type="typens:TESTPorts">
		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="sayHello">
			<soap:operation soapAction="http://localhost/test.php"/>
			<input ><soap:body use="literal"/></input >
			<output><soap:body use="literal"/></output>
		</operation>
	</binding>
	<service name="TESTWebService">
		<documentation>TEST WebService</documentation>
		<port name="TESTPorts" binding="typens:TESTBinding">
			<soap:address location="http://localhost/test.php"/>
		</port>
	</service>
</wsdl:definitions>

RESULT :

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <SOAP-ENV:sayHelloResponse>
      <hello>Hello, toto...</hello>
    </SOAP-ENV:sayHelloResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Alive!!!!
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Server</faultcode>
      <faultstring>Bad Request</faultstring>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

When the query is good => no problem
The probleme is due to the SoapFault...
I tried to catch SoapFault... but without result...
try {
  $server->handle("");
} catch (SoapFault $fault) {
  echo "SoapFault";
}

I don't know what is the more switable: never stop the process, or throw Exception...

Regards,

FENDT Charles
 [2005-03-25 01:22 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-03-29 13:47 UTC] cfendt at silicom dot fr
The script always stops when a soapfault is raised...
No catch possible...
 [2005-03-29 17:41 UTC] sniper@php.net
Assigning back to Dmitry.

 [2005-06-20 10:55 UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-06-28 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 14:01:32 2024 UTC