With Homebrew, sometimes you have many PHP versions installed. I personally use EVERY php version to be sure every open-source project I have on my env works for every version.
This is why I have php 5.3, 5.4, 5.5, 5.6 and 7.0 installed with Homebrew.
Switching php versions is a pain when using homebrew, because you have to brew unlink
the php versions used, and brew link
the one you want.
Executing this script without argument shows all versions installed, and especially the current version.
Executing it with an argument will check a potential symlink in /usr/local/bin/php{version}
unlink all versions, and link the one you specified.
Execute this script to install phpv
sudo wget https://gist.githubusercontent.com/Pierstoval/1645a26ea5d2200642b6/raw/phpv.bash -O /usr/local/bin/phpv && sudo chmod +x /usr/local/bin/phpv && sudo chown `whoami` /usr/local/bin/phpv
Show all versions installed:
$ phpv
Current:
PHP 5.5.27 (cli) (built: Jul 14 2015 17:04:01)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
PHP 7.0.0beta2 (cli) (built: Jul 24 2015 10:34:53)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
PHP 5.6.11 (cli) (built: Jul 30 2015 17:06:05) (DEBUG)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
PHP 5.5.27 (cli) (built: Jul 14 2015 17:04:01)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
PHP 5.4.43 (cli) (built: Jul 14 2015 16:52:26)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
PHP 5.3.29 (cli) (built: Jul 14 2015 16:39:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.2.7, Copyright (c) 2002-2015, by Derick Rethans
Switch to another version:
$ phpv 54
phpv
Switch to /usr/local/bin/php54
Unlinking /usr/local/Cellar/php53/5.3.29_2... 0 symlinks removed
Unlinking /usr/local/Cellar/php54/5.4.43_2... 0 symlinks removed
Unlinking /usr/local/Cellar/php55/5.5.27_2... 0 symlinks removed
Unlinking /usr/local/Cellar/php56/5.6.11_2... 38 symlinks removed
Unlinking /usr/local/Cellar/php70/7.0.0-beta.2... 0 symlinks removed
Linking /usr/local/Cellar/php54/5.4.43_2... 40 symlinks created
PHP 5.4.43 (cli) (built: Jul 14 2015 16:52:26)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
Plus, for convenience, it's awesome to have a symlink for every PHP version pointing to /usr/local/opt/php/{version}/bin/php
.
But you're lucky: the script can generate them automatically if it detects that a specific version of PHP is installed and if the symlink is not created.
Else, you can do it yourself by executing this script:
sudo ln -s /usr/local/opt/php53/bin/php /usr/local/bin/php53 && sudo chmod +x /usr/local/bin/php53
sudo ln -s /usr/local/opt/php54/bin/php /usr/local/bin/php54 && sudo chmod +x /usr/local/bin/php54
sudo ln -s /usr/local/opt/php55/bin/php /usr/local/bin/php55 && sudo chmod +x /usr/local/bin/php55
sudo ln -s /usr/local/opt/php56/bin/php /usr/local/bin/php56 && sudo chmod +x /usr/local/bin/php56
sudo ln -s /usr/local/opt/php70/bin/php /usr/local/bin/php70 && sudo chmod +x /usr/local/bin/php70
Then, you can execute any of the php version directly in command line by executing the so-called version:
$ php53 -v
PHP 5.3.29 (cli) (built: Jul 14 2015 16:39:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.2.7, Copyright (c) 2002-2015, by Derick Rethans
And you can do the same for every version.
#!/bin/bash
# Use:
# $ phpv
# > Will return current global php version, and ALL php versions symlinked
#
# $ phpv {version}
# > Will "brew unlink" all versions, and "brew link php{version}"
# View README file for more info
if [[ ! -f "/usr/local/bin/php53" && -f "/usr/local/opt/php53/bin/php" ]]; then
echo "Creating symlink for php 5.3"
sudo ln -s /usr/local/opt/php53/bin/php /usr/local/bin/php53 && sudo chmod +x /usr/local/bin/php53
fi
if [[ ! -f "/usr/local/bin/php54" && -f "/usr/local/opt/php54/bin/php" ]]; then
echo "Creating symlink for php 5.4"
sudo ln -s /usr/local/opt/php54/bin/php /usr/local/bin/php54 && sudo chmod +x /usr/local/bin/php54
fi
if [[ ! -f "/usr/local/bin/php55" && -f "/usr/local/opt/php55/bin/php" ]]; then
echo "Creating symlink for php 5.5"
sudo ln -s /usr/local/opt/php55/bin/php /usr/local/bin/php55 && sudo chmod +x /usr/local/bin/php55
fi
if [[ ! -f "/usr/local/bin/php56" && -f "/usr/local/opt/php56/bin/php" ]]; then
echo "Creating symlink for php 5.6"
sudo ln -s /usr/local/opt/php56/bin/php /usr/local/bin/php56 && sudo chmod +x /usr/local/bin/php56
fi
if [[ ! -f "/usr/local/bin/php70" && -f "/usr/local/opt/php70/bin/php" ]]; then
echo "Creating symlink for php 7.0"
sudo ln -s /usr/local/opt/php70/bin/php /usr/local/bin/php70 && sudo chmod +x /usr/local/bin/php70
fi
if [ -z "$1" ]; then
echo "Current:"
php -v
echo ""
if [[ -f "/usr/local/opt/php70/bin/php" ]]; then /usr/local/opt/php70/bin/php -v ; fi
if [[ -f "/usr/local/opt/php56/bin/php" ]]; then /usr/local/opt/php56/bin/php -v ; fi
if [[ -f "/usr/local/opt/php55/bin/php" ]]; then /usr/local/opt/php55/bin/php -v ; fi
if [[ -f "/usr/local/opt/php54/bin/php" ]]; then /usr/local/opt/php54/bin/php -v ; fi
if [[ -f "/usr/local/opt/php53/bin/php" ]]; then /usr/local/opt/php53/bin/php -v ; fi
else
if [[ -f "/usr/local/opt/php$1/bin/php" ]]; then
echo "Switch to /usr/local/opt/php$1/bin/php"
if [[ -f "/usr/local/opt/php70/bin/php" ]]; then brew unlink php70 ; fi
if [[ -f "/usr/local/opt/php56/bin/php" ]]; then brew unlink php56 ; fi
if [[ -f "/usr/local/opt/php55/bin/php" ]]; then brew unlink php55 ; fi
if [[ -f "/usr/local/opt/php54/bin/php" ]]; then brew unlink php54 ; fi
if [[ -f "/usr/local/opt/php53/bin/php" ]]; then brew unlink php53 ; fi
brew link "php$1"
php -v
else
echo "Php version $1 does not exist."
fi
fi