Submit a Pull Request Report a Bug
Table of Contents
- Using Packages
- Using the bundled PHP prior to macOS Monterey
- Compiling PHP on macOS
This section contains notes and hints specific to installing PHP on macOS. PHP is bundled with macOS since macOS X [10.0.0] prior to macOS Monterey [12.0.0]. Compiling is similar to the Unix installation guide.
+add a note
User Contributed Notes
There are no user contributed notes for this page.
PHP is missing in Monterey
Starting with macOS Monterey, PHP is no longer included in a default installation of the system. If you want to use PHP on macOS Monterey, you must first install PHP. The following instructions show the Terminal commands to install PHP. To enter a Terminal command, you can copy it from your web browser to the clipboard and then paste it in Terminal and hit the return key to execute the command.
Installing Homebrew
To install Homebrew, see
the instructions on the Homebrew installation page and the Homebrew home page.
After installing Homebrew, enter the following command in Terminal to verify that Homebrew has successfully been installed:
brew --version
Installing PHP
Once Homebrew is installed, enter the following command to install PHP:
brew install php
This will take a while and will produce some output in the Terminal window. At the end, when you see the input prompt again, check the path of "php" with the following command:
command -v php
The command should display something like
/usr/local/bin/php
or
/opt/homebrew/bin/php
Now PHP is ready, and you can run PHP scripts on your computer.
Running PHP scripts
Scripts start with a
"shebang" line that tells the system where it can find the interpreter for the script language. Up to macOS Big Sur, PHP was pre-installed in the location /usr/bin/php, but now PHP lives at a different path. You will therefore need to update the shebang line in PHP scripts to
#!/usr/bin/env php
Using PHP in Typinator
In Typinator, you can use PHP scripts in expansions in two ways:
a] You can store external scripts in the Includes/Scripts folder and then include invocations of these scripts in Typinator expansions. If you already have used PHP scripts before, you need to update the shebang lines in these scripts, as described above in "Running PHP scripts".
b] You can include inline scripts in expansions. A simple inline script in PHP would be:
{/PHP
echo "Hello";
}
In this case, Typinator knows where to find the PHP interpreter in both Monterey and in older versions of macOS, but you need at least Typinator 8.11 to run PHP scripts on Monterey. Older versions of Typinator will display an error message that says "script RunPHP.php failed". Typinator 8.11 and newer will even check whether PHP is installed, and it helps you with the installation by displaying these instructions in a web browser.
Get more information about Typinator here.
I've got a brand new Mac yesterday and noted that it states PHP will be removed from future Mac OS versions by default.
I'm pretty surprised they go this way. By default, it comes with PHP 7.3, and I needed 7.4 for my project so let me guide you through setting up PHP on your Mac!
Mac's warning looks like this:
WARNING: PHP is not recommended
PHP is included in macOS for compatibility with legacy software.
Future versions of macOS will not include PHP.
However, don't be scared. It's pretty easy to install PHP and even install multiple versions if you like.
Installing Homebrew
When it comes to installing software on your Mac, we need only one package manager, and it's Homebrew.
It can install any package or software you want and even install specific versions.
Read more on Homebrew - Package manager for Mac.
Quick guide: Run the following command in your terminal:
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"
Installing PHP with Homebrew on Mac
To install PHP, we can run the following command:
brew install php
This will install the latest stable version of PHP [At the moment of writing, this is PHP 8.0].
Before running any brew commands, it's a good habit to run the following commands first. These will check if Homebrew is all up to date and running the latest versions.
brew update
brew doctor
Installing PHP 7.4 with Homebrew
In my case, I wanted to install PHP 7.4 since it's the version our server is running.
To install a specific version, we can use the @ notation.
brew install [email protected]
This will run the installer, and it should end with a success notice in your terminal.
However, even though this installed PHP, it didn't change our running instance yet.
So if we run the php -v
command, we might still see a different version like PHP 7.3.14 [CLI]
or whatever you have installed.
To fix this, we need to link the correct PHP version.
Switching PHP Versions with Homebrew on Mac
Now that we installed versions, we can easily switch between them using the link
command.
First, check which version of PHP is currently running:
php -v
# PHP 8.0.1 [cli] [built: Jan 8 2021 01:27:28] [ NTS ]
# Copyright [c] The PHP Group
Then we can unlink that version by using:
brew unlink [email protected]
The next step is to link the version we want:
brew link [email protected]
It will tell you to run a script to add the path:
echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
This will make sure the right PHP version is loaded,
now if you run php -v
again it should show:
# PHP 7.4.14 [cli] [built: Jan 8 2021 01:35:35] [ NTS ]
# Copyright [c] The PHP Group
And there we go. We switched to the PHP version.
Php -v is still showing the wrong version
I had the issue when upgrading from 7.4 to 8.0 for my demo that I kept seeing 7.4 when running php -v
. Remove the old line in your .zshrc
file to fix this manually.
nano ~/.zshrc
Remove the line that points to your old instance of PHP.
export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"
Note: This is an example of my version. It might differ from what you installed before.
Thank you for reading, and let's connect!
Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter