The PHP version 7.0.0 is released on 03 Dec 2015. It has been three years since then, however, the PHP version installed originally on macOS Sierra (10.12) is still 5.6. I would like to upgrade PHP version in my mac, here are the upgrade procedures to the version 7.2.
First, let’s find out the PHP version number.
$ php -v
PHP 5.6.30
Actually , There are two ways to upgrade PHP.
1. Homebrew
Homebrew is a famous package manager for macOS. It is very easy to use and very powerful.
First, let’s find out which PHP version is available in Homebrew’s package list.
$ brew search php7
==> Searching local taps...
php@7.0 php@7.1 php@7.2
Let’s install the latest version ‘7.2’. Just excute the following commands to install.
- a. Update the brew package first.
$ brew update && brew upgrade
- b. Error messages occurs with following commands. Actually, these commands are no longer needed. Therefore, they can be ignored.
$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/homebrew-php
p.s. Error message: some of the taps are no longer needed.
$ brew tap homebrew/dupes
Error: homebrew/dupes was deprecated. This tap is now empty as all its formulae were migrated.
$ brew tap homebrew/versions
Error: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
$ brew tap homebrew/homebrew-php
Error: homebrew/php was deprecated. This tap is now empty as all its formulae were migrated.
- c. Unlink the old version of PHP if it was installed with Homebrew.
$ brew unlink php56
- d. Install the new version of PHP.
$ brew install php72
After installation, it shows:
To enable PHP in Apache add the following to httpd.conf (/etc/apache2) and restart Apache:
- e. Using vim edit httpd.conf of apache2.
$ sudo vim /etc/apache2/httpd.conf
If you don’t like to edit using vim, go to Finder and type:
$ open /etc/apache2/
Search “php5_module” then commend out the statements as follows:
#Comment out the PHP5 module
#LoadModule php5_module libexec/apache2/libphp5.so
Add the commands as follows:
#Enable PHP 7 module
LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
- f. Finally, check DirectoryIndex includes index.php
DirectoryIndex index.php index.html
The php.ini and php-fpm.ini file can be found in:
/usr/local/etc/php/7.2/
To have launchd start php now and restart at login:
$ brew services start php
Or, if you don’t want/need a background service you can just run:
$ php-fpm
==> Summary
/usr/local/Cellar/php/7.2.7: 515 files, 78.9MB
- g. Restart Apache service
$ sudo apachectl restart
- h. check the php version:
$ php -v
PHP 7.2.7 (cli) (built: Jun 22 2018 06:29:00) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Done!
Other brew commands for reference
- brew tap: to list and update the repositories exist in local computer.
$ brew tap
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
No changes to formulae.
-
brew tap (user)/(repo): to download the 3rd party formula repositories (user)/(repo). If you want to install a package listed in a certain formula repository, the formula repository must be tapped first.
-
brew untap (user)/(repo): delete the 3rd party formula repositories (user)/(repo).
-
brew cleanup: a little tip, clean up old downloads and the files from the Homebrew download-cache are deleted.
$ brew cleanup
Removing: /Users/xxxx/Library/Caches/Homebrew/node-10.4.1.sierra.bottle.tar.gz... (16MB)
:
:
==> This operation has freed approximately 5.4GB of disk space.
5.4GB! It’s quite a lot of space.
- brew doctor: fix your Homebrew repository.
2. CURL
Another option is to execute a curl command provided by php-osx.liip.ch which downloads the binary package from the website and installs it to my mac. This one-line installation is for PHP 7.2 (Current stable) and macOS 10.10 and later.
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.2
- One little problem mentioned on the php-osx.liip.ch website is:
php -v
echoes the old version number after installation. The explanation given by php-osx is:
php-osx doesn’t overwrite the php binaries installed by Apple, but installs everything in /usr/local/php5. The new php binary is therefore in /usr/local/php5/bin/php.
You can also adjust your PATH do include that directory, eg. write into your ~/.profile file the following
The solution is to add the path /usr/local/php5/bin
to global variable $PATH
.
export PATH=/usr/local/php5/bin:$PATH
I choose the first method since it is really convenient to manage and install packages utilizing Homebrew.