I recently upgraded to Mac OS X Yosemite. It seems OS X Yosemite makes my original post on installing Apache, PHP, and MySQL on Mac OS X obsolete. Specifically, Yosemite includes Apache 2.4. This post is a complete update for installing Apache, PHP, and MySQL on Mac OS X Yosemite.
A reminder that Mac OS X runs atop UNIX. So most UNIX software installs easily on Mac OS X. Furthermore, Apache and PHP come packaged with OS X. To create a local web server, all you need to do is enable them and install MySQL.
I am aware of the web server software available for Mac OS X, notably MAMP. These get you started quickly. But they forego the learning experience and, as most developers report, can become difficult to manage.
First, open the Terminal app and switch to the root
user to avoid permission issues while running these commands.
sudo su -
apachectl start
Verify It works! by accessing http://localhost
First, make a backup of the default Apache configuration. This is good practice and serves as a comparison against future versions of Mac OS X.
cd /etc/apache2/ cp httpd.conf httpd.conf.bak
Now edit the Apache configuration. Feel free to use TextEdit if you are not familiar with vi.
vi httpd.conf
Uncomment the following line (remove #
):
LoadModule php5_module libexec/apache2/libphp5.so
Restart Apache:
apachectl restart
You can verify PHP is enabled by creating a phpinfo()
page in your DocumentRoot
.
The default DocumentRoot
for Mac OS X Yosemite is /Library/WebServer/Documents
. You can verify this from your Apache configuration.
grep DocumentRoot httpd.conf
Now create the phpinfo()
page in your DocumentRoot
:
echo '<?php phpinfo();' > /Library/WebServer/Documents/phpinfo.php
Verify PHP by accessing http://localhost/phpinfo.php
Note: If you are upgrading MySQL you should skip this section and instead read this.
The README suggests creating aliases for mysql
and mysqladmin
. However there are other commands that are helpful such as mysqldump
. Instead, I [updated my path][8] to include /usr/local/mysql/bin
.
[8]: http://superuser.com/questions/69130/where-does-path-get-set-in-os-x-10-6-snow-leopard
export PATH=/usr/local/mysql/bin:$PATH
Note: You will need to open a new Terminal window or run the command above for your path to update.
I also run mysql_secure_installation
. While this isn’t necessary, it’s good practice.
You need to ensure PHP and MySQL can communicate with one another. There are [several options][9] to do so. I do the following:
[9]: http://stackoverflow.com/questions/4219970/warning-mysql-connect-2002-no-such-file-or-directory-trying-to-connect-vi
cd /var
mkdir mysql
cd mysql
ln -s /tmp/mysql.sock mysql.sock
The default configuration for Apache 2.4 on OS X Yosemite seemed pretty lean. For example, common modules like mod_rewrite
were disabled. You may consider enabling this now to avoid forgetting they are disabled in the future.
I edited my Apache Configration:
vi /etc/apache2/httpd.conf
I uncommented the following lines (remove #
):
LoadModule deflate_module libexec/apache2/mod_deflate.so LoadModule expires_module libexec/apache2/mod_expires.so LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Note: Previous version of Mac OS X ran Apache 2.2. If you upgraded OS X and previously configured Apache, you may want to read more about upgrading to to Apache 2.4 from Apache 2.2.
If you develop multiple projects and would like each to have a unique url, you can configure Apache VirtualHosts for Mac OS X.
If you would like to install PHPMyAdmin, return to my original post on installing Apache, PHP, and MySQL on Mac OS X.