How do I upgrade php on a VPS?

Question:

The php version on my VPS is out of date. How do I update it?

Answer:

Using the OS vendors normal update command can get you some updates (but perhaps not what you want – see below). For example on RedHat/CentOS run:

yum update php

However usually the OS vendors versions are not the latest. The update them to patch security issues but many times are far out of date from what you may require.

To update RedHat/CentOS to a newer php run these commands:


yum erase php-pdo php-xml php-mysql php php-common php-cli php-gd php-mbstring php-devel

yum install php53-pdo php53-xml php53-mysql php53 php53-common php53-cli php53-gd php53-mbstring

/sbin/service httpd restart

A note:

These are “unofficial” RPM’s as RedHat only official supports a particular (semi-old) version and backports security fixes to it – good for large corporate users but not so great for active developers). However the RPMS’s above are widely used in the community and most developers view them as trustworthy (just important to note that they are not actually from RedHat).

Converting from mod_php to php-cgi : Steps to take for a seemless upgrade

Question:

I’d like to change from mod_php to php-cgi. What steps should I take to make sure the change is smooth?

Answer:

Most conversions are as simple as selecting the new version to use in the control panel. If a small amount of possible downtime on your site is acceptable you may want to just try the change and see. In the worst case, you’ll have to wait as long as 15 minutes to switch back to the old version.

The server looks for changes and reloads (if needed) your php configuration every 15 minutes. If you make the change and find you site has problems, you’ll need to “undo” the change by selecting the version you were running previously. You’ll then need to wait for the server to reload your config. Note: During this time your site still runs – there is no downtime – but it does not run the new php version.

If you want near-zero probability of problems (or if you tried the approach above and ran it problems), we recommend the following:

1. Make sure there are no files owned by the generic server user “nobody”. Do this:

find /home/your_user_name_here -user nobody -print

If it shows files owned by nobody, you’ll need to put in a support request for an admin to change the ownership back to your own username.

2. Use the php.ini file that your site was running under before :


mkdir /home/your_username_here/etc/
cp /usr/local/lib/php.ini /home/your_username_here/etc/

4. Make sure date.timezone is set in php.ini. A common problem ugprading to php5.3 is not having date.timezone set. It needs to be set either in your code or (easier) in php.ini

An example for EST timezone is :

date.timezone = 'America/New_York'

5. Check the php.net changelog documentation for any functions that have been removed or changed between the version you are currently running and the version you are upgrading to.

Why does my website run an old version of php?

Change php version control panel screenshot

Question:

I noticed my website is not running the latest version of php. Why not?

Answer:

You can change your php version at any time by going to the php section of your control panel. Normally, we do not update your php version (other than for security patches) automatically in case your scripts rely a certain version being used. We do force minor revision upgrades that address security issues, etc.

In the past we kept all users up-to-date on the latest php versions but found that in many instances the major updates (from 4 to 5, 5.1 to 5.2 to 5.3, etc.) would break client sites. It was rare but happened enough for us to change our policy.

To summarize:

  • You can change your php version in the “php” section of the control panel
  • We perform security related upgrades automatically
  • Major version upgrades are not performed automatically. Instead, use the (one click) version update selector in the control panel