This was a little experiment gone somewhat wrong, when I tried to upgrade my VPS to PHP6. I swear it worked, but I should have known that nothing supports it — WordPress just crapped out a bunch of errors. On a higher note though, it seems to be hella secure as you can no longer use magic quotes or globals, otherwise Apache will fail. So if you really want to be on the bleeding edge, here’s how you install PHP6:
I didn’t really need to install a whole bunch of stuff, but depending on how your webserver is already set up you may need to install extra dependencies, but this will become obvious during the compile.
1) Make sure your autoconf version is up to date with version 2.13 or higher:
2) Install ICU…you can find your version here.
tar -xzvf icu4c-3_6-src.tgz
./configure --prefix=/usr/local/icu && make && make install
3) Git yur PHP! You can find the latest dev release of PHP6 at http://snaps.php.net/. Your wget and tar targets will be different, as the development version changes frequently.
tar -xvzf php6.0-200702230530.tar.gz
This will build the configuration and let you know if something is missing. Once this is complete, run the configure script…I’ve the mandatory stuff in there, but you’ll also want to include any PHP modules that you need. You may find it easier to copy this from a phpinfo file, minus the quotes.
./configure --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/ --with-icu-dir=/usr/local/icu
You’ll probably get build errors, which is usually due to 1) a particular module no longer being supported or 2) PHP cannot find that module’s files on the server. In this case you’ll want to see which module the configure command stops at, then either leave it out or make sure the module is compatible with the correct location specification in the configure command. For instance, I have Ming installed and this is the directive in my configure command:
Once you have a good build, you can install your PHP:
make && make install
4) Configure Apache
Usually the PHP installation with the –with-apxs switch will add the necessary entries to your httpd.conf, but if not you will need to comment out the loaders for php4/php5 and add the one for php6:
/etc/init.d/httpd restart (or whatever command you use to restart Apache)
LoadModule php5_module libexec/libphp6.so
Now…twenty bucks says that there is now something on the server that doesn’t work, which will be obvious with the Apache restart you just did. You’ll want to check your error logs for the obvious problems, then correct the issues in your php.ini and other files it mentions. The most common issue is with the magic quotes gpc and register globals.
If you have any third-party extensions like Zend. IonCube, or eAccelerator, you’ll need to re-install those as well.
There you have it…you now have PHP6 installed on your server…and now your apps don’t work! You can admire your work next time you try to load your site.
Be sure to make a pretty phpinfo() file to check the installation.
<?php phpinfo() ?>