-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Open
@Girgias
Description
If I'm right, that would also happen on other OSs if ext/soap is built as shared library.
Nope, has nothing to do with shared libs – Windows specific issue.
The problem is that SoapServer
expects "wsdl" as query string to deliver the WSDL. However, if a query string doesn't contain an equals sign, command line options are ignored on Windows. So either hack-around by making SoapServer
more deliberate:
ext/soap/soap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 48a7fc8885..d7dfc4ecd5 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1297,7 +1297,8 @@ PHP_METHOD(SoapServer, handle) if (SG(request_info).request_method && strcmp(SG(request_info).request_method, "GET") == 0 && SG(request_info).query_string && - stricmp(SG(request_info).query_string, "wsdl") == 0) { + (stricmp(SG(request_info).query_string, "wsdl") == 0 || + stricmp(SG(request_info).query_string, "wsdl=") == 0)) { if (service->sdl) { /*
or apply a proper fix for the tests, namely to spawn a php-cgi process with the command line options, and then send a CGI request and verify the response. Certainly possible, but I'm not sure it's worth the effort.
Originally posted by @cmb69 in #17432 (comment)