Upgrade to PHP 5.4 on Mac OS X Lion

The PHP that ships with Mac is getting rusty. Time to get PHP 5.4!

I tried several methods, and several fail failed. This one (https://gist.github.com/2721719) didn’t.

sudo port selfupdate
sudo port -u upgrade outdated

sudo port install php54 php54-apache2handler
cd /opt/local/apache2/modules
sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php54.so
sudo port install php54-curl php54-ftp php54-iconv php54-mbstring php54-mcrypt php54-mysql php54-openssl php54-soap php54-sqlite php54-xsl php54-zip php54-xdebug php54-mongo

sudo port install php53 php53-apache2handler
sudo port install php53-curl php53-ftp php53-iconv php53-mbstring php53-mcrypt php53-mysql php53-openssl php53-soap php53-sqlite php53-xsl php53-zip php53-xdebug php53-mongo

cd #
curl http://pear.php.net/go-pear.phar -o go-pear.phar
sudo php go-pear.phar

And then we can select which php the system uses by saying either of these:

sudo port select php php54
sudo port select php php53

When installing Pear:
Option 1. Installation base ($prefix) : /opt/local/lib/php54
4. Binaries directory : /opt/local/bin
Then get PHPUnit

pear info pear && rm go-pear.phar
sudo pear config-set auto_discover 1; sudo pear install pear.phpunit.de/PHPUnit

Lastly we nano /etc/apache2/httpd.conf and ctrl-w to look where php is. Comment the 5.3 one, and add the line:

#LoadModule php5_module libexec/apache2/lib_php5.so
LoadModule php5_module /opt/local/apache2/modules/mod_php54.so

So we can switch between the two by moving the comment. Finally restart apache!

sudo apachectl restart

phpinfo() and php -v both showing 5.4! Fantastico! Remember to set your default timezone now!