Since the latest MacOS Monterey 12 has removed the operating system, we need to manage PHP manually. I will show you a tip to install multiple PHP versions on MacOS Monterey 12.
We will use Homebrew as package manager to do this. If you don’t have Homebrew installed, you might to set it up on your development machine.
Let’s start with installing the first PHP version.
Article Contents
Install one PHP version
The steps to install PHP is very simple, first, tap the PHP formulae and then select the appropriate PHP version to install.
$ brew tap shivammathur/php
$ brew install shivammathur/php/PHP_VERSION
Please replace PHP_VERSION
with your version, the available options are:
- php@5.6
- php@7.0
- php@7.1
- php@7.2
- php@7.3
- php@7.4
- php@8.0
- php@8.1
Let say you want to install PHP version 7.3, you will need to issue this command:
$ brew install shivammathur/php/php@7.3
Once done, restart the terminal and confirm php version:
$ php -v
PHP 7.3.33 (cli) (built: Apr 5 2022 22:29:31) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.33, Copyright (c) 1999-2018, by Zend Technologies
Install multiple PHP versions
You can install another PHP versions by issuing the same command above with different PHP version options:
$ brew install shivammathur/php/php@8.1
Each PHP version is set in a separate directory under /opt/homebrew/Cellar
:
$ ls -asl /opt/Cellar | grep php
0 drwxr-xr-x 3 petehouston admin 96 May 6 22:11 php
0 drwxr-xr-x 3 petehouston admin 96 May 6 22:11 php@7.3
0 drwxr-xr-x 3 petehouston admin 96 May 6 22:11 php@7.4
The default /opt/homebrew/Cellar/php
is linked to whatever latest Homebrew link is set to.
You can switch the link to different PHP version by using this command:
$ brew unlink php && brew link --overwrite --force php@8.1
Switch PHP versions
Instead of using Homebrew link to set default PHP version, you can simply export the PHP bin directory to PATH
environment variable to use the desired PHP version.
You can do this on the shell:
$ php -v
PHP 7.3.33 (cli) (built: Apr 5 2022 22:29:31) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.33, Copyright (c) 1999-2018, by Zend Technologies
$ export PATH="/opt/homebrew/opt/php@8.1/bin:$PATH"
$ export PATH="/opt/homebrew/opt/php@8.1/sbin:$PATH"
$ php -v
PHP 8.1.5 (cli) (built: Apr 16 2022 00:03:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.5, Copyright (c) Zend Technologies
with Zend OPcache v8.1.5, Copyright (c), by Zend Technologies
As you can see from the above commands, the default PHP command has been switched from PHP 7.3 to 8.1 easily.
You can write an alias or a function to handle the export:
# ~/.zshrc
alias set-php8.1="export PATH=\"/opt/homebrew/opt/php@8.1/bin:/opt/homebrew/opt/php@8.1/sbin:$PATH\""
alias set-php7.3="export PATH=\"/opt/homebrew/opt/php@7.3/bin:/opt/homebrew/opt/php@7.3/sbin:$PATH\""
switch-php() {
local version=$1
export PATH="/opt/homebrew/opt/php@$version/bin:$PATH"
export PATH="/opt/homebrew/opt/php@$version/bin:$PATH"
alias php=/opt/homebrew/opt/php@$version/bin/php
}
Then you can switch on the shell like this:
$ set-php8.1
$ set-php7.3
$ switch-php 7.3
$ switch-php 8.1
Conclusion
That’s how you install multiple PHP versions on MacOS Monterey 12 and manage them on the shell easily.
Have fun!