Add and install PHP to macOS Monterey 12 with Homebrew
The latest macOS version Monterey 12 has removed PHP altogether from its operating system, there is a comment in the Apache config file httpd.conf that says:
#PHP was deprecated in macOS 11 and removed from macOS 12
Fortunately you can install PHP and all the different PHP versions including 5.7, 7.4 and 8 with some help from Homebrew.
Install Homebrew
If you don’t have Homebrew installed, install it, here is a guide on how to install Homebrew.
So once you have Homebrew installed on your macOS a particular PHP Homebrew formulae will need to be added from this maintainer, what is great about this, is all PHP versions are available whereas only some versions are available on the default Homebrew formulas.
After Homebrew install, follow the below:
Add the PHP formulae
brew tap shivammathur/php
Choose the PHP version – this example uses 7.4
brew install shivammathur/php/[email protected]
Other options are
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected] or known as just php
- [email protected]
Link the PHP Version
brew link --overwrite --force [email protected]
Change your version to match
Restart the Terminal
Run…
php -v
You should now see the new version, to change to another version just repeat the process from the brew install...
then unlink and link in the new PHP version by issuing a command like below but with your correct version:
brew unlink php && brew link --overwrite --force [email protected]
Using new PHP in macOS Monterey shipped Apache
If you are using macOS in built shipped Apache, you can use the PHP but it needs to be Code Signed, before Monterey this practice was optional but now it is mandatory. This guide will help you with Code Signing.
After code signing PHP follow the below to complete loading the PHP module with Apples Apache.
sudo nano /etc/apache2/httpd.conf
Find the ‘Loadmodule’ lines and new PHP version path:
Intel Chip
LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
Apple Chip
LoadModule php7_module /opt/homebrew/opt/[email protected]/lib/httpd/modules/libphp7.so
Restart Apache
sudo apachectl restart
Now the new PHP version will be used.
You could download all the versions and just uncomment the one you want if you intend to swap around (change path prefix depending on Chip used – see above:
#LoadModule php5_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp5.so #LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so #LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so #LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so #LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so #LoadModule php_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp.so #LoadModule php_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp.so
PHP 8 and macOS Apache
One extra step is needed for PHP 8 and macOS bundled Apache:
sudo nano /etc/apache2/httpd.conf
Add the new PHP 8 and comment out the old one.
LoadModule php_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp.so
Go to the end of the file and add:
<FilesMatch .php$> SetHandler application/x-httpd-php </FilesMatch>
Restart Apache
Removing Older Homebrew PHP version (optional)
If you have the older PHP formulas from an older Homebrew installation, you may wish to remove these:
rm -rf $(brew --cellar)/php
Remove old PHP Launch Agents and daemons, if present:
rm -f ~/Library/LaunchAgents/homebrew.mxcl.php* rm -f /Library/LaunchAgents/homebrew.mxcl.php* rm -f /Library/LaunchDaemons/homebrew.mxcl.php*
Remove the deprecated homebrew/php
tap, if present:
brew untap homebrew/php
Run brew cleanup:
brew cleanup