Issues

ZF-12190: Zend_Soap_AutoDiscover shows stranger behavior after migration on productive server

Description

First of all: On my local installation, the WSDL shows all datatypes correct by their type: xsd:string, xsd:int, soap-enc:Array, and so on..! On my webserver, the WSDL shows ALL datatypes as xsd:anyType..!

My Soap-Client, which I use to test the functionality, doesn't show any results of my calls. There are no errors and even the easiest data dumps aren't displayed.

The configuration of my webserver and my local server are almost identical. I'm using, in both cases, lighttpd as server.

PHP version local: 5.3.5 PHP version productive: 5.3.2

Comments

Small update: The methods of my webservice DO work. I let them write some textfiles on my server. But none of them returns any data. I assume it's because of the wrong data types inside of my wsdl. (As said in my first post) But I can't explain how it's possible, that my webserver can't identify any data type. It makes no sense to me.

I was able to fix the problem with the incorrect data types. My webserver used eAccelerator, which doesn't work well with Zend_Soap_AutoDiscover. But my main problem remains: My webservice methods still don't return any values if I call them on my webserver. (Doesn't matter where they are called from)

Resolved.. I needed to filter the file with ini_set(). Disabling eAccelerator didn't work.

Could you explain how {{ini_set}} fixed your problem, so future visitors can learn from your experience?

Had that too long time ago. eAccelerator makes reflection blind to what you have documented on your server class. Still you can disable it on a script basis before including your server class. To use the manual as an example:


/**
 * disable eAccelerator when installed
 */
if (ini_get('eaccelerator.enable')) {
    ini_set('eaccelerator.enable', 0);
}
/**
 * include 'My_SoapServer_Class' or let the autoloader include it
 */ 
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setClass('My_SoapServer_Class');
$autodiscover->handle();