Bug #49169 [Com]: SoapServer calls wrong function, although "SOAP action" header is correct
Edit report at https://bugs.php.net/bug.php?id=49169&edit=1 ID: 49169 Comment by: php dot net at exby dot com Reported by:jeroen at asystance dot nl Summary:SoapServer calls wrong function, although "SOAP action" header is correct Status: Verified Type: Bug Package:SOAP related Operating System: linux PHP Version:5.3.3 Block user comment: N Private report: N New Comment: I still can't believe this is not fixed. Can we get someone from php.net to respond to this - whether or not there is any intention to fix this?? I really don't want to use JAVA for setting up services but so far PHP's inability to correctly understand the soapaction header is forcing me in this direction. And no, I can't switch to rpc/encoded and it's not a 'fix'. Document Literal is by far the more used paradigm outside of the PHP world - and web services are often implemented in the Enterprise space. Please, somebody fix this. Previous Comments: [2013-02-24 20:05:03] reto at casserini dot com Another workaround. Instead of which always leads to a call of the first operation "getCourses", I define two new types: and use them for the messages: works fine for me. [2012-10-12 19:30:12] mrice at canarylabs dot com This bug appears to still be present in 5.3.6. I need help on how to use the workaround of: âActually I circumvented the problem, by putting all the message definitions in separate files, which I then include in the schema-part of the wsdl. Then PHP can handle the soap:binding style="document" just fine, so the problem only occurs if the names are duplicated within the same file.â We are recreating a web service from an already existing one and existing clients need to work. How do you include the message definitions in separate files as stated above? [2011-02-11 12:28:25] jeroen at asystance dot nl Just wanted to verify this bug is still present in 5.3.3 [2010-09-08 14:04:08] rkm at nykredit dot dk Well, maybe the RPC-protocol will work, but where I work, it is mandatory to create services using style="document", and it really isn't to the advantage of PHP to tell the servicepeople in the Java dept. that we can't handle "document" styles. Actually I circumvented the problem, by putting all the message definitions in separate files, which I then include in the schema-part of the wsdl. Then PHP can handle the soap:binding style="document" just fine, so the problem only occurs if the names are duplicated within the same file. [2010-09-08 13:54:12] hoffmeister dot c at gmx dot de This is no bug. I guess you used style="document" in the wsdl file operation description. In this case there is no operation name passed from the client to the server. Try style="rpc" (remote procedure call) instead. That works pretty well. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=49169 -- Edit this bug report at https://bugs.php.net/bug.php?id=49169&edit=1
Bug #49169 [Com]: SoapServer calls wrong function, although "SOAP action" header is correct
Edit report at https://bugs.php.net/bug.php?id=49169&edit=1 ID: 49169 Comment by: reto at casserini dot com Reported by:jeroen at asystance dot nl Summary:SoapServer calls wrong function, although "SOAP action" header is correct Status: Verified Type: Bug Package:SOAP related Operating System: linux PHP Version:5.3.3 Block user comment: N Private report: N New Comment: Another workaround. Instead of which always leads to a call of the first operation "getCourses", I define two new types: and use them for the messages: works fine for me. Previous Comments: [2012-10-12 19:30:12] mrice at canarylabs dot com This bug appears to still be present in 5.3.6. I need help on how to use the workaround of: âActually I circumvented the problem, by putting all the message definitions in separate files, which I then include in the schema-part of the wsdl. Then PHP can handle the soap:binding style="document" just fine, so the problem only occurs if the names are duplicated within the same file.â We are recreating a web service from an already existing one and existing clients need to work. How do you include the message definitions in separate files as stated above? [2011-02-11 12:28:25] jeroen at asystance dot nl Just wanted to verify this bug is still present in 5.3.3 [2010-09-08 14:04:08] rkm at nykredit dot dk Well, maybe the RPC-protocol will work, but where I work, it is mandatory to create services using style="document", and it really isn't to the advantage of PHP to tell the servicepeople in the Java dept. that we can't handle "document" styles. Actually I circumvented the problem, by putting all the message definitions in separate files, which I then include in the schema-part of the wsdl. Then PHP can handle the soap:binding style="document" just fine, so the problem only occurs if the names are duplicated within the same file. [2010-09-08 13:54:12] hoffmeister dot c at gmx dot de This is no bug. I guess you used style="document" in the wsdl file operation description. In this case there is no operation name passed from the client to the server. Try style="rpc" (remote procedure call) instead. That works pretty well. [2010-03-30 12:19:42] rkm at nykredit dot dk Adding to the above comment - If first SoapServer fails to read your WSDL properly, it will end up calling all known methods of the object added to SoapServer. - By "known" I mean, that if the .wsdl describes *another* binding to *another* method, than the one called - The other method gets called as well, and the result added to the tag in the return. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=49169 -- Edit this bug report at https://bugs.php.net/bug.php?id=49169&edit=1
Bug #49169 [Com]: SoapServer calls wrong function, although "SOAP action" header is correct
Edit report at https://bugs.php.net/bug.php?id=49169&edit=1 ID: 49169 Comment by: mrice at canarylabs dot com Reported by:jeroen at asystance dot nl Summary:SoapServer calls wrong function, although "SOAP action" header is correct Status: Verified Type: Bug Package:SOAP related Operating System: linux PHP Version:5.3.3 Block user comment: N Private report: N New Comment: This bug appears to still be present in 5.3.6. I need help on how to use the workaround of: âActually I circumvented the problem, by putting all the message definitions in separate files, which I then include in the schema-part of the wsdl. Then PHP can handle the soap:binding style="document" just fine, so the problem only occurs if the names are duplicated within the same file.â We are recreating a web service from an already existing one and existing clients need to work. How do you include the message definitions in separate files as stated above? Previous Comments: [2011-02-11 12:28:25] jeroen at asystance dot nl Just wanted to verify this bug is still present in 5.3.3 [2010-09-08 14:04:08] rkm at nykredit dot dk Well, maybe the RPC-protocol will work, but where I work, it is mandatory to create services using style="document", and it really isn't to the advantage of PHP to tell the servicepeople in the Java dept. that we can't handle "document" styles. Actually I circumvented the problem, by putting all the message definitions in separate files, which I then include in the schema-part of the wsdl. Then PHP can handle the soap:binding style="document" just fine, so the problem only occurs if the names are duplicated within the same file. [2010-09-08 13:54:12] hoffmeister dot c at gmx dot de This is no bug. I guess you used style="document" in the wsdl file operation description. In this case there is no operation name passed from the client to the server. Try style="rpc" (remote procedure call) instead. That works pretty well. [2010-03-30 12:19:42] rkm at nykredit dot dk Adding to the above comment - If first SoapServer fails to read your WSDL properly, it will end up calling all known methods of the object added to SoapServer. - By "known" I mean, that if the .wsdl describes *another* binding to *another* method, than the one called - The other method gets called as well, and the result added to the tag in the return. [2010-03-30 11:03:12] rkm at nykredit dot dk It's not even enough to change the message name (I didn't get that from the initial comments) - One needs to change the element of the part. Thus Will not work with (reusing tmp:ClientId): You'll have to create a new element, wich makes it hard to use i a corporate environment, where you have to use standard elemnts - Thus this is not a valid option, even though it works: This bug has been here for a while, any movement against a solution? So far I have to create a WSDL for each operation, which is not very PHP-smooth! The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=49169 -- Edit this bug report at https://bugs.php.net/bug.php?id=49169&edit=1
Bug #49169 [Com]: SoapServer calls wrong function, although "SOAP action" header is correct
Edit report at http://bugs.php.net/bug.php?id=49169&edit=1 ID: 49169 Comment by: rkm at nykredit dot dk Reported by:jeroen at asystance dot nl Summary:SoapServer calls wrong function, although "SOAP action" header is correct Status: Verified Type: Bug Package:SOAP related Operating System: linux PHP Version:5.2SVN-2009-08-05 (snap) Block user comment: N New Comment: Well, maybe the RPC-protocol will work, but where I work, it is mandatory to create services using style="document", and it really isn't to the advantage of PHP to tell the servicepeople in the Java dept. that we can't handle "document" styles. Actually I circumvented the problem, by putting all the message definitions in separate files, which I then include in the schema-part of the wsdl. Then PHP can handle the soap:binding style="document" just fine, so the problem only occurs if the names are duplicated within the same file. Previous Comments: [2010-09-08 13:54:12] hoffmeister dot c at gmx dot de This is no bug. I guess you used style="document" in the wsdl file operation description. In this case there is no operation name passed from the client to the server. Try style="rpc" (remote procedure call) instead. That works pretty well. [2010-03-30 12:19:42] rkm at nykredit dot dk Adding to the above comment - If first SoapServer fails to read your WSDL properly, it will end up calling all known methods of the object added to SoapServer. - By "known" I mean, that if the .wsdl describes *another* binding to *another* method, than the one called - The other method gets called as well, and the result added to the tag in the return. [2010-03-30 11:03:12] rkm at nykredit dot dk It's not even enough to change the message name (I didn't get that from the initial comments) - One needs to change the element of the part. Thus Will not work with (reusing tmp:ClientId): You'll have to create a new element, wich makes it hard to use i a corporate environment, where you have to use standard elemnts - Thus this is not a valid option, even though it works: This bug has been here for a while, any movement against a solution? So far I have to create a WSDL for each operation, which is not very PHP-smooth! [2009-11-04 17:08:04] spyowl at gmail dot com Confirmed on 5.3.1RC3 using WSDL. The problem seems to be the matching first argument name between methods (not the whole signature) - as long as 2 or more methods have the same name for the first argument the SoapServer will always execute the first method listed, regardless of soapAction, and even if there are additional arguments for those methods that are different from each other. This is a pretty serious bug. [2009-09-30 06:58:28] wee at xbe dot ch this bug is really annoying.. the forced use of rpc (the "workaround") is not a serious fix. we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that business ready, but that too has it's issues (has problems when it comes to generate complex wsdl and with complex type handling on the php side). and it segfaults with an activated zend optimizer+ ;-) anyway, i just comment to give more importance to this bug. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=49169 -- Edit this bug report at http://bugs.php.net/bug.php?id=49169&edit=1
Bug #49169 [Com]: SoapServer calls wrong function, although "SOAP action" header is correct
Edit report at http://bugs.php.net/bug.php?id=49169&edit=1 ID: 49169 Comment by: hoffmeister dot c at gmx dot de Reported by:jeroen at asystance dot nl Summary:SoapServer calls wrong function, although "SOAP action" header is correct Status: Verified Type: Bug Package:SOAP related Operating System: linux PHP Version:5.2SVN-2009-08-05 (snap) Block user comment: N New Comment: This is no bug. I guess you used style="document" in the wsdl file operation description. In this case there is no operation name passed from the client to the server. Try style="rpc" (remote procedure call) instead. That works pretty well. Previous Comments: [2010-03-30 12:19:42] rkm at nykredit dot dk Adding to the above comment - If first SoapServer fails to read your WSDL properly, it will end up calling all known methods of the object added to SoapServer. - By "known" I mean, that if the .wsdl describes *another* binding to *another* method, than the one called - The other method gets called as well, and the result added to the tag in the return. [2010-03-30 11:03:12] rkm at nykredit dot dk It's not even enough to change the message name (I didn't get that from the initial comments) - One needs to change the element of the part. Thus Will not work with (reusing tmp:ClientId): You'll have to create a new element, wich makes it hard to use i a corporate environment, where you have to use standard elemnts - Thus this is not a valid option, even though it works: This bug has been here for a while, any movement against a solution? So far I have to create a WSDL for each operation, which is not very PHP-smooth! [2009-11-04 17:08:04] spyowl at gmail dot com Confirmed on 5.3.1RC3 using WSDL. The problem seems to be the matching first argument name between methods (not the whole signature) - as long as 2 or more methods have the same name for the first argument the SoapServer will always execute the first method listed, regardless of soapAction, and even if there are additional arguments for those methods that are different from each other. This is a pretty serious bug. [2009-09-30 06:58:28] wee at xbe dot ch this bug is really annoying.. the forced use of rpc (the "workaround") is not a serious fix. we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that business ready, but that too has it's issues (has problems when it comes to generate complex wsdl and with complex type handling on the php side). and it segfaults with an activated zend optimizer+ ;-) anyway, i just comment to give more importance to this bug. [2009-09-23 14:51:48] robin dot harvey at chaptereight dot com @bigdan at gmail dot com The workaround I'm using is to set up my WSDL so that all methods have a unique input type signature. Of course this leads to an ugly and unnecessarily bloated WSDL, but there's not much other choice (other than WS02 PHP, that is) The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=49169 -- Edit this bug report at http://bugs.php.net/bug.php?id=49169&edit=1
Bug #49169 [Com]: SoapServer calls wrong function, although "SOAP action" header is correct
Edit report at http://bugs.php.net/bug.php?id=49169&edit=1 ID: 49169 Comment by: rkm at nykredit dot dk Reported by: jeroen at asystance dot nl Summary: SoapServer calls wrong function, although "SOAP action" header is correct Status: Verified Type: Bug Package: SOAP related Operating System: linux PHP Version: 5.2SVN-2009-08-05 (snap) New Comment: Adding to the above comment - If first SoapServer fails to read your WSDL properly, it will end up calling all known methods of the object added to SoapServer. - By "known" I mean, that if the .wsdl describes *another* binding to *another* method, than the one called - The other method gets called as well, and the result added to the tag in the return. Previous Comments: [2010-03-30 11:03:12] rkm at nykredit dot dk It's not even enough to change the message name (I didn't get that from the initial comments) - One needs to change the element of the part. Thus Will not work with (reusing tmp:ClientId): You'll have to create a new element, wich makes it hard to use i a corporate environment, where you have to use standard elemnts - Thus this is not a valid option, even though it works: This bug has been here for a while, any movement against a solution? So far I have to create a WSDL for each operation, which is not very PHP-smooth! [2009-11-04 17:08:04] spyowl at gmail dot com Confirmed on 5.3.1RC3 using WSDL. The problem seems to be the matching first argument name between methods (not the whole signature) - as long as 2 or more methods have the same name for the first argument the SoapServer will always execute the first method listed, regardless of soapAction, and even if there are additional arguments for those methods that are different from each other. This is a pretty serious bug. [2009-09-30 06:58:28] wee at xbe dot ch this bug is really annoying.. the forced use of rpc (the "workaround") is not a serious fix. we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that business ready, but that too has it's issues (has problems when it comes to generate complex wsdl and with complex type handling on the php side). and it segfaults with an activated zend optimizer+ ;-) anyway, i just comment to give more importance to this bug. [2009-09-23 14:51:48] robin dot harvey at chaptereight dot com @bigdan at gmail dot com The workaround I'm using is to set up my WSDL so that all methods have a unique input type signature. Of course this leads to an ugly and unnecessarily bloated WSDL, but there's not much other choice (other than WS02 PHP, that is) [2009-09-18 14:10:39] jeroen at asystance dot nl bigdan, I think you left out one option: this _is_ a bug. Using RPC style _is_ a workaround, but one that doesn't always work. The real problem is that SOAP should use the SOAPAction header to determine which operation to call, not guess based on parameters (which is what it looks to be doing now). While the comment you refer to does point out this very issue and predates this bug, that doesn't mean it's not a bug. Rather the commenter could (and should?) have filed this as a bug more than a year ago. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=49169 -- Edit this bug report at http://bugs.php.net/bug.php?id=49169&edit=1
Bug #49169 [Com]: SoapServer calls wrong function, although "SOAP action" header is correct
Edit report at http://bugs.php.net/bug.php?id=49169&edit=1 ID: 49169 Comment by: rkm at nykredit dot dk Reported by: jeroen at asystance dot nl Summary: SoapServer calls wrong function, although "SOAP action" header is correct Status: Verified Type: Bug Package: SOAP related Operating System: linux PHP Version: 5.2SVN-2009-08-05 (snap) New Comment: It's not even enough to change the message name (I didn't get that from the initial comments) - One needs to change the element of the part. Thus Will not work with (reusing tmp:ClientId): You'll have to create a new element, wich makes it hard to use i a corporate environment, where you have to use standard elemnts - Thus this is not a valid option, even though it works: This bug has been here for a while, any movement against a solution? So far I have to create a WSDL for each operation, which is not very PHP-smooth! Previous Comments: [2009-11-04 17:08:04] spyowl at gmail dot com Confirmed on 5.3.1RC3 using WSDL. The problem seems to be the matching first argument name between methods (not the whole signature) - as long as 2 or more methods have the same name for the first argument the SoapServer will always execute the first method listed, regardless of soapAction, and even if there are additional arguments for those methods that are different from each other. This is a pretty serious bug. [2009-09-30 06:58:28] wee at xbe dot ch this bug is really annoying.. the forced use of rpc (the "workaround") is not a serious fix. we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that business ready, but that too has it's issues (has problems when it comes to generate complex wsdl and with complex type handling on the php side). and it segfaults with an activated zend optimizer+ ;-) anyway, i just comment to give more importance to this bug. [2009-09-23 14:51:48] robin dot harvey at chaptereight dot com @bigdan at gmail dot com The workaround I'm using is to set up my WSDL so that all methods have a unique input type signature. Of course this leads to an ugly and unnecessarily bloated WSDL, but there's not much other choice (other than WS02 PHP, that is) [2009-09-18 14:10:39] jeroen at asystance dot nl bigdan, I think you left out one option: this _is_ a bug. Using RPC style _is_ a workaround, but one that doesn't always work. The real problem is that SOAP should use the SOAPAction header to determine which operation to call, not guess based on parameters (which is what it looks to be doing now). While the comment you refer to does point out this very issue and predates this bug, that doesn't mean it's not a bug. Rather the commenter could (and should?) have filed this as a bug more than a year ago. [2009-09-18 13:51:18] bigdan at gmail dot com Nevermind on the workaround - either this is not a bug, this issue was noticed well before this bug, or the comments here are entirely unrelated though they correct the issue for me: http://us3.php.net/manual/en/soapserver.handle.php#81750 TLDR: Instead of http://bugs.php.net/bug.php?id=49169 -- Edit this bug report at http://bugs.php.net/bug.php?id=49169&edit=1