PHP SOAP extension missing after Zend Server update

Just a heads-up; during the scheduled maintenance to our CenOS/ZS based webservers we noticed an update from the Zend Server repository for the PHP SOAP extension (php-5.3-soap-zend-server). After installing the extension (assuming it is a bug-fix release or something like that), errors started showing up in several systems using the SOAP based services (like the Magento webservice) on those servers.

Turns out /usr/local/zend/etc/conf.d/soap.ini just contains “soap.so”. It should contain “extension=soap.so” in order for Apache (part of Zend Server) to load it. So if after a yum update you’re missing SOAP functionality on your Zend Server (CE) based webservers; check out /usr/local/zend/etc/conf.d/soap.ini!

IIS7 PHP WSDL issue

If you ever run into a scenario where you need to run a PHP SOAP webservice in an IIS environement, you might encounter the following problem. When generating a client proxy in .NET/WCF this exception is thrown;

The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF

The problem, as it turns out, is that ASP.NET appends the HTTP X-Powered-By header. This header seems to confuse the proxy generation code. To fix the issue you need to remove this IIS header. Head to your IIS Manager > You website > The folder your PHP webservice is located > Click HTTP Response header. Then remove the X-Powered-By header. Now enjoy generating proxies!

Some evil internet voices claim that you should set useUnsafeHeaderParsing to false in your clients’ application configuration to make .NET ignore the inconsistency in your webservice WSDL output. This however is a workaround, not a solution. So if you run the webservice apply the header fix as described above.

Remove IIS headers