I posted several talks about compiling PHP from source, but everyone was trying to convince me that a package manager like Homebrew was a more convenient way to install.
The purpose of Homebrew is simple: a package manager for macOS that will allow you to set up and install common packages easily and allows you to update frequently using simple commands.
I used a clean installation of macOS Sierra to ensure all steps could be recorded and tested. In most cases you already have done work on your Mac, so chances are you can skip a few steps in this tutorial.
I’ve made this according to the installation instructions given on GetGrav.
These installation procedures will set up your macOS Sierra with PHP 7.1 and Apache 2.4.
xcode-select --install
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Set up for installation of PHP and Apache
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew tap homebrew/apache
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
brew install httpd24 --with-privileged-ports --with-http2
sudo cp -v /usr/local/Cellar/httpd24/2.4.25/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
ps -aef | grep httpd
You should see something similar as output
0 23417 1 0 2:48PM ?? 0:00.06 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
1 23420 23417 0 2:48PM ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
1 23421 23417 0 2:48PM ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
1 23422 23417 0 2:48PM ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
1 23423 23417 0 2:48PM ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
1 23424 23417 0 2:48PM ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
501 23428 403 0 2:48PM ttys000 0:00.00 grep httpd
We assume you had PHP 7.0 installed
brew unlink php70
Time to install latest PHP with the apache web server
brew install php71 --with-httpd24
Don’t forget to set date.timezone
in /usr/local/etc/php/7.1/php.ini
!!!
Also make sure to set the following line in /usr/local/etc/apache2/2.4/httpd.conf
(You might need to disable others):
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
Also make sure you have set the following lines correctly:
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
sudo /usr/local/bin/apachectl -k restart
Create a phpinfo.php
in /usr/local/var/www/htdocs
with the following contents:
<?php phpinfo();
You should see the famous PHP information page!
Now you can set up your virtual hosts like you normally would do.
Hey, just to point that you can use Homebrew services manager to setup the installation and load of the launchdaemon. Instead of the whole process of the Set up Apache for autostart at macOS Sierra (re)boot you can just run
sudo brew services start httpd24
(if you do not have the brew services installed yet it will be installed automatically).