Kamis, 26 Maret 2009

How to resolve error 'SoapClient' not found on PHP

I've often found that something gets left out or forgotten when moving a website from an old server to a new install. I've just finished migrating one of my customer's sites to a new CentOS 5.0 install with Apache 2.2 and PHP 5.1.6, and there's one single PHP script in the site which uses the SoapClient class.

Naturally I'd forgotten to test this particular function until after the migration was complete, and was wondering why the script had failed. A quick look in the Apache error log file revealed the following error message:

 [Wed Sep 25 00:50:12 2007] [error] [client 10.1.1.2] PHP Fatal error:  Class 'SoapClient' not found in /path/to/filename.php on line 469 

Aha! I'd forgotten to install the SOAP extension when I'd installed PHP on this particular CentOS machine. Not being to sure what the package would be called, I did this:

yum search soap | grep php

which returned the following:

php-soap.x86_64                          5.1.6-5.el5            base
php-soap
The php-soap package contains a dynamic shared object that will add
php-soap.x86_64 5.1.6-11.el5 updates
php-soap
The php-soap package contains a dynamic shared object that will add
php-soap.x86_64 5.1.6-7.el5 updates
php-soap
The php-soap package contains a dynamic shared object that will add
php-soap.x86_64 5.1.6-12.el5 updates
php-soap
The php-soap package contains a dynamic shared object that will add
php-soap.x86_64 5.1.6-15.el5 updates
php-soap
The php-soap package contains a dynamic shared object that will add
php-soap.x86_64 5.1.6-15.el5 updates
php-soap
The php-soap package contains a dynamic shared object that will add

So that tells me I need to install the "php-soap" package; pretty straight forward name which I should have been able to guess...

$ yum install php-soap

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
php-soap x86_64 5.1.6-15.el5 updates 135 k
Updating for dependencies:
php x86_64 5.1.6-15.el5 updates 1.2 M
php-cli x86_64 5.1.6-15.el5 updates 2.3 M
php-common x86_64 5.1.6-15.el5 updates 139 k
php-devel x86_64 5.1.6-15.el5 updates 511 k
php-gd x86_64 5.1.6-15.el5 updates 112 k
php-imap x86_64 5.1.6-15.el5 updates 52 k
php-mbstring x86_64 5.1.6-15.el5 updates 975 k
php-mysql x86_64 5.1.6-15.el5 updates 86 k
php-pdo x86_64 5.1.6-15.el5 updates 62 k
php-xml x86_64 5.1.6-15.el5 updates 98 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 10 Package(s)
Remove 0 Package(s)

Total download size: 5.6 MB
Is this ok [y/N]:

As you can see, there were also some updates to some of the PHP packages I had already installed, so these were installed at the same time. After the install was complete, it was just a matter of restarting Apache and the SoapClient class could now be used by my PHP script.

Using YUM to install software can be done on CentOS, Red Hat Enterprise Linux, Fedora and some other Linux distributions. Others may use different package managers and call the packages different names, so the method of installing PHP SOAP will be different from Linux distribution to Linux distribution.

Tidak ada komentar:

Posting Komentar

Yahoo Matikan 12 Layanan

Berikut adalah daftar lengkap layanan Yahoo yang akan dihentikan: 1. Yahoo Axis, browser plug-in (28 Juni) 2. Yahoo Browser Plus, layan...