Why follow this guide? I use php everyday and this is the most simple and flexible solution I found.
php
php81
php80
php7
composer81
composer7
I prefer this solution over brew solutions with link
and unlink
.
Install both the default php package 8.1 and the older php7.4 / php8.0 packages
# Install php (defaults to version 8.2).
brew install php
# Install older php 8.0.
brew install php@8.1
# Install older php 8.0.
brew install php@8.0
# Add brew tap for old php versions.
brew tap shivammathur/php
# Install older php 7.4.
brew install shivammathur/php/php@7.4
Make php 8.2 the default
# Lets start clean and unlink all php versions
brew unlink php
brew unlink php@7.4
brew unlink php@8.0
brew unlink php@8.1
# Link php 8.2
brew link php
Create extra symlinks for php 7.4, 8.0, and 8.1
# Create a symlinks in /usr/local/bin. You will likely have to run sudo.
ln -s /opt/homebrew/opt/php@8.1/bin/php /usr/local/bin/php81
ln -s /opt/homebrew/opt/php@8.0/bin/php /usr/local/bin/php80
ln -s /opt/homebrew/opt/php@7.4/bin/php /usr/local/bin/php7
(bonus) Setup composer shortcuts to run composer with specific php versions.
# .bashrc or .zshrc or equivalent
alias composer7='php7 /usr/local/bin/composer'
alias composer81='php81 /usr/local/bin/composer'
Remove any manual php $PATH
setups in your .bashrc
or .zshrc
(or equivalent). It may look like this.
# .bashrc or .zshrc or equivalent
# Remove any lines like this!
export PATH="/opt/homebrew/opt/php@8.1/sbin:$PATH"
export PATH="/usr/local/opt/php@7.4/bin:$PATH"
# Install php (defaults to version 8).
pamac install php
# Install older php 7.4.
pamac install php74
# Setup php 7 as the version to be used when you run "php7".
sudo ln -s /usr/bin/php74 /usr/local/bin/php7
Output of php -v
$ php -v
PHP 8.2.2 (cli) (built: Feb 5 2023 12:38:16) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.2, Copyright (c) Zend Technologies
with Zend OPcache v8.2.2, Copyright (c), by Zend Technologies
Output of php7 -v
$ php7 -v
PHP 7.4.33 (cli) (built: Jan 21 2023 06:43:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.33, Copyright (c), by Zend Technologie
Output of php80 -v
$ php81 -v
PHP 8.0.27 (cli) (built: Jan 12 2023 04:00:24) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.27, Copyright (c) Zend Technologies
with Zend OPcache v8.0.27, Copyright (c), by Zend Technologies
Output of php81 -v
$ php81 -v
PHP 8.1.15 (cli) (built: Feb 3 2023 12:35:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.15, Copyright (c) Zend Technologies
with Zend OPcache v8.1.15, Copyright (c), by Zend Technologies