php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #42692 Procedure 'int1' not present with doc/lit SoapServer
Submitted: 2007-09-18 03:26 UTC Modified: 2007-11-13 15:10 UTC
Votes:4
Avg. Score:5.0 ± 0.0
Reproduced:4 of 4 (100.0%)
Same Version:1 (25.0%)
Same OS:2 (50.0%)
From: michael dot tutty at gmail dot com Assigned: dmitry (profile)
Status: Closed Package: SOAP related
PHP Version: 5CVS-2007-09-18 (snap) OS: SuSE 10.2
Private report: No CVE-ID: None
 [2007-09-18 03:26 UTC] michael dot tutty at gmail dot com
Description:
------------
Calling AddNumbers on the sample SOAP server class yields the familiar "Procedure 'xxx' not present" exception when calling $server->handle(). 

Calling the reflectString(string) method works. It seems as though the number of parameters makes a difference.

This seems like a pretty big problem, as it prevents PHP from acting as a WS-I-compliant service to .NET and Java-based consumers.

I tested with this service class as part of verifying bug 42086. It is not fixed in this example. Since I'm not the owner of 42086, I am submitting this report instead.

Reproduce code:
---------------
http://pastebin.com/m786a07d4

Expected result:
----------------
The SoapServer class should recognize the method being called.

Actual result:
--------------
The SoapServer class appears to look for an implementation method that matches the name of the first Xml tag in the SOAP envelope. I think this would be correct for rpc/encoded usage, but not for doc/lit.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-09-21 02:49 UTC] deathemperor at gmail dot com
Just found this bug yesterday from my co-worker. Fixed it today by changing the filename which I think it's caching problem. You can avoid changing filename by setting soap.wsdl_cache_enabled = 1 using ini_set().

Hope this helps.
 [2007-10-18 11:29 UTC] dmitry@php.net
So the bug has already fixed?
http://pastebin.com/m786a07d4 contains nothing, so I cannot look into it.

 [2007-10-18 13:29 UTC] michael dot tutty at gmail dot com
No, it hasn't, and I can't find the sample code I posted to pastebin. You can create a simple doc/lit web service with a function AddNumbers(int one, int two) that returns one + two.

Using the SOAPClient class should return the error. Not that this seems to be a boundary condition issue, since a function with no parameters or one parameter will work.
 [2007-11-01 12:10 UTC] dmitry@php.net
Sorry, but I am not able to fix the bug without reprodusable case.
 [2007-11-08 22:18 UTC] rruckley at gmail dot com
I also have this same error and its driving me batty. I have four other operations defined in my WSDL file with single parameters and they all work. This is the only operation with two parameters and it does not.
It complains about procedure 'peid' not present yet this is the name of the first parameter of the function so it is obviously confused. Creating a function called 'peid' also makes no difference.
My WSDL file is
http://netdb.alphawest.com.au/xml/wsdl/netdb.wsdl

I can paste my code if you wish.
 [2007-11-09 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".
 [2007-11-13 15:10 UTC] dmitry@php.net
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 13:01:29 2024 UTC