How To Set Up Apache and PHP
How To Set Up Apache and PHP

Setting Up Apache and PHP for Local Development on macOS


In this comprehensive guide, we will walk you through the process of setting up Apache and PHP for local development on macOS using the Homebrew package manager. We’ll cover the installation, configuration, and essential steps to get your local development environment up and running smoothly.


To begin, we’ll install Apache and PHP using Homebrew. Ensure that Homebrew is installed on your macOS system. If not, you can find installation instructions on the official Homebrew website. Assuming Homebrew is ready, open your terminal and run the following command to install Apache and PHP:

brew install httpd php

Please note that the Homebrew prefix may vary depending on your macOS system (e.g., /opt/homebrew for Apple Silicon, /usr/local for Intel-based Macs). Make sure to adjust paths accordingly. To check your Homebrew prefix, use the command brew --prefix.

Development URLs

For a user-friendly local development setup, consider using custom top-level domains such as .test. This approach allows you to access your projects through URLs like my-first-project.test, enhancing organization and convenience. To configure these domains, edit your /etc/hosts file and add entries like this: my-first-project.test

This configuration ensures that requests to these domains are directed to your local web server.

Apache Configuration

Now, let’s delve into Apache configuration. Your main Apache configuration file can be found at /opt/homebrew/etc/httpd/httpd.conf (or /usr/local/etc/httpd/httpd.conf for Intel-based Macs). Here are the necessary changes:

Listening on Port 80

By default, Apache listens on port 8080, but you can change it to port 80 for a standard HTTP setup:

Listen 80

This allows you to run Apache without requiring root privileges.

Enabling Virtual Hosts

To serve multiple websites on your computer with different hostnames defined in /etc/hosts, enable virtual hosts by uncommenting this line:

#Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

This line loads the virtual hosts configuration from the specified file.

Enabling mod_rewrite Module

The mod_rewrite module is essential for URL rewriting. Uncomment this line to enable it:

#LoadModule rewrite_module lib/httpd/modules/

This module is useful for creating user-friendly URLs.

ServerName Configuration

Configure a default ServerName to eliminate warning messages. You can use any hostname you prefer:


PHP Configuration

Now, let’s make PHP available on your server:

Loading PHP Module

Add the following LoadModule directive after other directives to load the PHP module:

LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/

This ensures that Apache can process PHP files.

PHP Configuration File

Create a separate PHP configuration file in the extra directory and include it in the main configuration file:

Add this line to the section with Include directives:

# PHP settings
Include /opt/homebrew/etc/httpd/extra/httpd-php.conf

Now, create the httpd-php.conf file with the following content:

<IfModule php_module>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
<IfModule dir_module>
DirectoryIndex index.html index.php

This configuration ensures that PHP files are handled correctly, and it sets the directory index.

Virtual Host Setup

With Apache and PHP configured, it’s time to set up virtual hosts for your projects. Edit the /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf file:

  1. Remove or comment out any existing dummy virtual hosts.
  2. Configure an actual virtual host as follows:
<VirtualHost *:80>
ServerName my-project.test
DocumentRoot /path/to/my-project
<Directory /path/to/my-project>
Require all granted
AllowOverride All

This sets up a virtual host with your custom domain (my-project.test) and specifies the document root path. Make sure to replace /path/to/my-project with the actual path to your project on your machine.

Up and Running

Your configuration is now complete! To start the server, you have several options:

  • Use Homebrew’s services command for automatic startup:
sudo brew services start httpd

To stop and disable autostart:

sudo brew services stop httpd
  • Manually start and stop the server using Apache’s built-in control interface:
sudo apachectl start
sudo apachectl stop

With the server running, you can visit your chosen hostname in your browser, and your site should be served correctly.

Permissions Postscript

Consider addressing permissions issues that may arise when your PHP site needs to create, modify, or delete files and directories under the project root. While this post provides a basic overview of file system permissions, it’s essential to understand that each file belongs to a user and a group. By default, your project root and its contents may belong to your user and group.

To resolve potential permission problems, change the group of directories and files to match the web server’s group (usually www) and grant that group write permissions using these commands:

sudo chown -R :www /path/to/my-project/
sudo chmod -R g+w /path/to/my-project/

This ensures that the web server has the necessary permissions to interact with your project files.

In conclusion, this guide provides a detailed walkthrough of setting up Apache and PHP for local development on macOS using Homebrew. Following these steps, you can create a robust local development environment that allows you to work on your web projects effectively.

© 2013 - 2024 Foreignerds. All Rights Reserved