Tuesday, February 1, 2011

How to install PHP 5.3 on CentOS


By David Gewirtz

Let's talk about PHP for a moment. In particular, let's talk about PHP's release history. PHP 5.1 was released in 2005. PHP 5.2 was released almost exactly a year later, in 2006. PHP 5.3, on the other hand, took four more years -- until 2009 -- to be released.

Now, there's a reason 5.3 took so long. There was a profound change to the language: namespaces. PHP is pretty much of an ad-hoc language, and without namespaces, object names had a tendency to run over each other. Namespaces changes that, so 5.3 was a big load of work. Now, personally, I'm not thrilled with exactly how PHP implemented namespaces, but that's a geekout for another article.

Anyway, the point is this: PHP 5.3 has been out for two years and has gone through five subsequent updated, bringing the current release to PHP 5.3.5.

Why am I telling you all this?

I'm telling you all this because CentOS, the community enterprise version Redhat's Fedora core, only supports PHP 5.1, a version of the language that's now more than five years -- more than 1,900 days -- old.

I like CentOS and one of our favorite ISPs uses CentOS 5.5. But when you install CentOS 5.5 (the latest release), you get what's essentially an archaic version of PHP. Yes, I know that sometimes the bugs haven't been pounded out, and when PHP 5.3 was released, there were bugs. But now that PHP 5.3 itself is two years old, it's a pretty solid beast.

So, net-net-net, if you want to run CentOS 5.5 and PHP 5.3, you have to modify your system.

Updating to PHP 5.3

This takes a number of steps. You need to remove the old PHP and install the new one. Because I wanted a PHP that's tuned for CentOS, I wanted to use existing PHP packages. But here's the rub: the official CentOS package repository doesn't support PHP 5.3 (or PHP 5.2, for that matter).

The first thing you'll need to do is add new repositories to your system. The following three commands will do the trick.

 # rpm -Uhv http:\//apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
 # rpm -Uvh http:\//download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
 # rpm -Uvh http:\//dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/ius-release-1.0-6.ius.el5.noarch.rpm

It should be noted that these versions move around all the time and you may have to do some poking around on the sites. I originally found references to these builds as epel-release-5-3, which didn't work, but I found epel-release-5-4, and since that worked, I went ahead and used that.

Once you've added repositories, you can use the yum package manager to install PHP. First, assuming you have a basic CentOS install, you'll need to remove PHP and it's associated friends. Here's how:

 # yum erase php php-pear php-mysql php-cli php-common