Configuring PHP 5 with SOAP on (dv) 3.5

This article was provided by http://dotjay.co.uk/2008/mar/configuring-php-5-with-soap-on-media-temple-dv-35 dotjay.co.uk. Thanks to Jon Gibbins.

Checking your current PHP installation

You can use phpinfo() to check your PHP installation and see whether or not the extension you need is already installed. If it’s not listed, it’s worth checking the PHP documentation to see how it suggests installing it. In my case, the SOAP extension is only available if PHP was configured with the –enable-soap option.

Getting SOAPy!

You will need to compile the SOAP shared module and add it to the existing PHP configuration. To do this, you’ll need to make sure you’ve installed the dv 3.5 Developer Tools. To do this, go to your Account Center, select your domain, find Root Access & Developer Tools and hit install. Open up a terminal and SSH into your server. If you don’t know how to do this, read up on getting SSH access to your server.

You’ll need to grab the latest PHP source code. Download it to somewhere convenient, like the home directory:

You can find current releases here. I would suggest to use your current version of your PHP installation. The current version dv 3.5 is 5.2.6.

cd ~
wget http://museum.php.net/php5/php-5.2.6.tar.gz

Decompress the tarball:

tar -zxf php-5.2.6.tar.gz

Move into the source directory and configure PHP with SOAP enabled (this may take a few minutes):

cd php-5.2.6
./configure --enable-soap=shared

Run the build (again, this may take a few minutes):

make

When that’s done, you can optionally test the build, which threw errors for me, but it all worked nonetheless:

make test

Copy the SOAP module into the existing PHP installation:

cp modules/soap.so /usr/lib/php/modules/

Add the SOAP module to the PHP configuration:

echo "extension=soap.so" > /etc/php.d/soap.ini

Restart Apache:

/etc/init.d/httpd restart

Tidy up by deleting the files we downloaded, e.g.:

cd ~
rm -rf php-5.2.6*

The SOAP module should now be loaded and ready to rock; you can check using phpinfo() again.