ID: 43464 Comment by: david dot chanial at gmail dot com Reported By: andrew at is dot co dot za Status: Open Bug Type: SOAP related Operating System: Fedora Core release 6 PHP Version: 5.2.5 New Comment:
Yes, I confirm this bug. How to demonstrate it with strace : http://www.craigbrasssystems.com/forum/index.php?showtopic=107&st=0#entry158 Please correct it :) Best regards, -- DaviXX Previous Comments: ------------------------------------------------------------------------ [2007-11-30 11:20:53] andrew at is dot co dot za Description: ------------ The server.php script shown below fails with a 'PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/html/server.php on line 9' when executed with the supplied soaptest.wsdl file. However, if you edit soaptest.wsdl and replace 'soapenc:array' with 'soapenc:Array' (i.e., change the lower case 'a' to an upper case 'A'), then the script executes correctly. The first case should at least return an error, rather than seemingly causing the server to enter an infinite loop. Reproduce code: --------------- server.php: <?php class SOAPTest { public function GetArray() { return array('one', 'two', 'three'); } } $server = new SoapServer(dirname(__FILE__) . '/soaptest.wsdl'); $server->setClass('SOAPTest'); $server->handle(); ?> client.php: <?php $client = new SoapClient(dirname(__FILE__) . '/soaptest.wsdl', array('exceptions' => false)); header('Content-Type: text/plain'); $ret = $client->GetArray(); if (is_soap_fault($ret)) echo "SOAP Fault: " . $ret->faultstring; else var_dump($ret); ?> soaptest.wsdl: <?xml version="1.0"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:SOAPTest" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="urn:SOAPTest"> <types> <xsd:schema targetNamespace="urn:SOAPTest"> <xsd:complexType name="ArrayOfString"> <xsd:complexContent> <xsd:restriction base="soapenc:array"> <xsd:attribute ref="soapenc:arrayType" arrayType="xsd:string[]"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:schema> </types> <message name="GetArrayInput"/> <message name="GetArrayOutput"> <part name="return" type="tns:ArrayOfString"/> </message> <portType name="SOAPTestPortType"> <operation name="GetArray"> <input message="tns:GetArrayInput"/> <output message="tns:GetArrayOutput"/> </operation> </portType> <binding name="SOAPTestBinding" type="tns:SOAPTestPortType"> <soap:binding xmlns="http://schemas.xmlsoap.org/wsdl/soap/" style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/" name="GetArray"> <input xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/"> <soap:body xmlns="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:SOAPTest"/> </input> <output xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/"> <soap:body xmlns="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:SOAPTest"/> </output> </operation> </binding> <service name="SOAPTestService"> <port xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/" name="SOAPTestPort" binding="tns:SOAPTestBinding"> <soap:address xmlns="http://schemas.xmlsoap.org/wsdl/soap/" location="http://localhost/server.php"/> </port> </service> </definitions> Expected result: ---------------- array(3) { [0]=> string(3) "one" [1]=> string(3) "two" [2]=> string(5) "three" } Actual result: -------------- SOAP Fault: Maximum execution time of 30 seconds exceeded ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=43464&edit=1