You will have the easiest time if you use the
php that comes with the OS, but some alternatives are listed below.
There are some software repositories for OS X that aim to provide the same kind of versatility that Linux software repos provide. The most popular are probably MacPorts, Homebrew, and Fink. These days, I would only recommend Homebrew because you will find the most support for it. They provide the most current versions of
Previously, I had instructions for compiling the Apache Web Server from source, but I don’t see a real benefit unless there was a particular version you wanted. Again, you will run into the least problems using either the built-in programs or getting them from Homebrew
If there are problems getting
httpd to listen on ports 80 and 443, try running service as root. You can do so with
sudo apachectl start. You can also use
sudo launchtl -w /System/Library/LaunchDaemons/org.apache.httpd.plist.
As of macOS Sierra, and surely some older versions of OS X, you will find the httpd configuration files in
/private/etc/apache2. There are a number of files in here, but you will want to look at
httpd.conf to start, in order to familiarize yourself with the basic setup. You will see many familiar sections including the
ServerRoot, a giant block of
LoadModule statements, a well-advised
AllowOverride None directive within a basic site definition for
/Library/WebServer/Documents, and some configuration to be included that has been commented out. Most of these would-be included files are in the
extra folder. You’ll also notice the very last line that will include any
.conf files in the
other folder. That’s where you’ll want to add any additional site or server configuration, and where you’ll see such a file for setting up the PHP module.
To get started, just do the following:
brew install httpd24
As of the latest macOS, things are running pretty smoothly. Run the command
brew info httpd24 to get a quick review on how things are setup. You can start the service with
apachectl start or
brew services start httpd.
Doing so will make the web server available on ports 8080 and 8443. To use ports 80 and 443, you’ll have to run the service as root. You can do so with either the command
sudo apachectl start or
sudo brew services start httpd.
/usr/local/var/www. The config files can be found in
/usr/local/etc/httpd. At the bottom of
httpd.conf, you should add the line
IncludeOptional /usr/local/etc/httpd/other/*.conf and create the
other folder as a place to house additional site configurations.
You will find the php executable in
/usr/bin/php. By default, it looks in
/etc/ for the
php.ini which probably won’t be in there, but you can create one from
/private/etc/php.ini.default. You can easily add the module to the built-in
httpd by uncommenting the
LoadModule php7_module line in
Make sure you have Xcode and have installed the command line tools installed or you may be prompted to do so before proceeding:
brew install php72
brew info php72 to get familiar with the landscape. I’d recommend adding the configuration commands for loading the module and applying it to PHP files in a separate
httpd conf file.
Getting the latest MySQL on OS X is, fortunately, not too tricky. For one, on the download page are DMG archives which you can use to easily install the program and configure it to run automatically. After mounting the DMG, open the PKG file, which will start the install. By default, it will install the program in
/usr/local under a directory named after the MySQL version. If you run the Startup Item package, that will save the plist file that defines the service. Also, be sure to open the prefPane file which will add MySQL to System Preferences. More info can be found in the ReadMe that came with the disk image.
If you would like to use MariaDB, it will probably be easiest to install it from Homebrew, as they keep it up to date and help manage any dependencies. If you follow MariaDB’s instructions for installation via Homebrew, you should definitely be good to go. One thing to watch out for is that some of the commands, like
mysql_secure_installation, must be ran from a particular directory. Be sure to carefully follow the directions in the Starting MariaDB section.
Also, I recommend taking a look at the plist file that you must enable with the launchctl command. It shows exactly what command is executed to start the MySQL server. Take note of the value sent to the
--data-dir option, which is the directory that contains the database files. This is where you will want to place any databases you are migrating from other MySQL databases.
If you are having trouble finding the
my.cnf with MySQL’s configuration, be sure to check the common MySQL and MariaDB locations. Otherwise, you may have to resort to a system-wide search of the file. From the command line you can either use
sudo /usr/libexec/locate.updatedb locate my.cnf
mdfind (OS X’s equivalent to locate):
mdfind -name my.cnf