Many (all?) php developers face the challenge that they have to test their work using different PHP versions. For MacOSX 10.10 Yosemite I found a  real simple solution that is setup in within about hour (excluding compile time 😉 )

Thanks to Tobias Liebig (@etobi auf Twitter) I came across the very good and well thought blog post of Alan Ivey about his php development setup on MacOSX. Until a couple of days ago I had a rather similar setup except the following features:

  • homebrew based apache server
  • auto virtual host feature for apache
  • php installation using fpm

The really cool thing of this setup is that you can create / use virtual hosts and switch php versions without touching the apache and / or php configuration! I can only recommend this setup.

While installing I came across two small glitches:

  • If you are switching from a mod_php- and homebrew-based installation, you must uninstall and remove every prior php installation and install all php versions from scratch. Otherwise the usage with fpm will not work. I recommend to compile and install all available php versions, as it is quite simple to switch between them at any time later.
  • The “mysql”-database in version 5.6 together with MacOS X 10.10 (Yosemite) may cause some headaches, resulting in the error: “Lost connection to MySQL server at ‘sending authentication information’, system error: 32”.  The reason seem to be the “Open File Limits” in MacOSX Yosemite. The solution provided on “docs.basho.com” worked for me. I had to create the two mentioned files and to restart my computer.

As already mentioned, one of the key features of this howto is to switch php versions without touching any configuration, neither Apache config nor php config or the need to switch to the root user. But you still have to remember all the cli commands changing the fpm pool. Another detail, that the post does not touch, that you might end up with different php version on the command line and the fpm pool, which can have unwanted side effects. If you want to use the same php version, you will have to issue some more commands in the terminal.

But as you know,  programmers are lazy 😉 So I made a small script that helps you and me to switch the php versions in a way that you can easy remember. 🙂 Installing and using it is quite simple:

  • Create a location that you can remember, f.e.

  • Create an empty text file there
  • Copy the following content to this file

  • save the file as “usephp”
  • exit your editor
  • open the terminal
  • make the file executable with the following command

Now you can switch at any time between the php versions, just using the command

where “55” refers to the wanted php version. If you replace it, with “56”, php 5.6 will be loaded and linked. Same is valid for the version 5.4 and 5.3.

Probably this script can be nicer and a little bit more sophisticated. But I hope it helps you developing and testing your php applications If you have any suggestions, please leave them in the comments.