Like many others, I recently upgraded my Production server to PHP 5.3. I’m not quite sure of the reason anymore. I think I was trying to integrate a PHP profiler that required something in 5.3. Whatever my original reason, after I got 5.3 installed on my server, it started slowly hemorrhaging memory and occasionally freezing up, always during the middle of the night while I slept of course. So, today I set about downgrading PHP 5.3.2 to PHP 5.2.13. Here is what worked for me.
First off, I’m running Ubuntu-Hardy, and both my PHP 5.3 and 5.2 distributions came from dotdeb.org. I have a Production server and a Test server that I try to keep as similar as possible. The first thing I did was make a backup of my Test server with PHP 5.3 installed and my app functional. Then I began hacking away on my Test server trying to successfully downgrade to PHP 5.2. When I screwed the Test server up beyond repair, I restored from backup. Likewise, when I made progress I documented my steps, restored from backup, and tried to repeat my success. I did this several times and eventually made a script that successfully downgraded PHP. I rehearsed this script 3 times on my Test server, backed-up my Production server, then repeated the script on my Production server. IT WORKED!
NOTICE: I probably have a couple of unnecessary steps in here that I didn’t bother to investigate their necessity. You may also need to uninstall and reinstall different PHP modules than I did, depending on the requirements of your applications.
My Final Steps
- Remove PHP
- sudo apt-get remove php5-common
- sudo apt-get remove php5-cli
- sudo apt-get remove php5
- sudo apt-get autoremove memcached
- Update your sources list to point to PHP 5.2
- sudo nano /etc/apt/sources.list
- Remove the references to PHP 5.3 packages. For me that was:
deb http://php53.dotdeb.org stable all deb-src http://php53.dotdeb.org stable all
- Add the following 5.2 packages:
deb http://http.us.debian.org/debian stable all deb http://security.debian.org/ stable/updates main contrib deb http://packages.dotdeb.org/ stable all
- Install PHP 5.2
- sudo apt-get update
- sudo apt-get install php5-cli
- sudo apt-get install php5
- Reinstall any PHP modules your application requires. For me that was:
- sudo apt-get install memcached
- sudo apt-get install php5-memcache
- sudo apt-get install php5-curl
- sudo apt-get install php5-mysql
- sudo reboot
After my production server rebooted, I had to fidget with Apache to get it started again. You may have to:
- sudo /etc/init.d/apache2 restart
- sudo /etc/init.d/apache2 stop
- sudo /etc/init.d/apache2 start
Hope this helps!