From:             andrew at is dot co dot za
Operating system: Fedora Core release 6
PHP version:      5.2.5
PHP Bug Type:     SOAP related
Bug description:  Using 'soapenc:array' instead of 'soapenc:Array' in WSDL doc 
causes timeout

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 bug report at http://bugs.php.net/?id=43464&edit=1
-- 
Try a CVS snapshot (PHP 4.4): 
http://bugs.php.net/fix.php?id=43464&r=trysnapshot44
Try a CVS snapshot (PHP 5.2): 
http://bugs.php.net/fix.php?id=43464&r=trysnapshot52
Try a CVS snapshot (PHP 5.3): 
http://bugs.php.net/fix.php?id=43464&r=trysnapshot53
Try a CVS snapshot (PHP 6.0): 
http://bugs.php.net/fix.php?id=43464&r=trysnapshot60
Fixed in CVS:                 http://bugs.php.net/fix.php?id=43464&r=fixedcvs
Fixed in release:             
http://bugs.php.net/fix.php?id=43464&r=alreadyfixed
Need backtrace:               http://bugs.php.net/fix.php?id=43464&r=needtrace
Need Reproduce Script:        http://bugs.php.net/fix.php?id=43464&r=needscript
Try newer version:            http://bugs.php.net/fix.php?id=43464&r=oldversion
Not developer issue:          http://bugs.php.net/fix.php?id=43464&r=support
Expected behavior:            http://bugs.php.net/fix.php?id=43464&r=notwrong
Not enough info:              
http://bugs.php.net/fix.php?id=43464&r=notenoughinfo
Submitted twice:              
http://bugs.php.net/fix.php?id=43464&r=submittedtwice
register_globals:             http://bugs.php.net/fix.php?id=43464&r=globals
PHP 3 support discontinued:   http://bugs.php.net/fix.php?id=43464&r=php3
Daylight Savings:             http://bugs.php.net/fix.php?id=43464&r=dst
IIS Stability:                http://bugs.php.net/fix.php?id=43464&r=isapi
Install GNU Sed:              http://bugs.php.net/fix.php?id=43464&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=43464&r=float
No Zend Extensions:           http://bugs.php.net/fix.php?id=43464&r=nozend
MySQL Configuration Error:    http://bugs.php.net/fix.php?id=43464&r=mysqlcfg

Reply via email to