Tips and tricks

Tired of using MAMP ?
You should already have Apache installed on mac
1. Install Apache
1a. Homebrew install
Install
brew install httpd php
Start it
brew --prefix
1b. included apache in mac os x – you just need to start it:
sudo apachectl start
restart:
sudo apachectl restart
check config:
apachectl configtest
optional, if you are on Mac OS X Monterey you might need to uninstall the default Apache 2.4
sudo apachectl stop sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null brew install httpd
to check if you have httpd running you can do ps -ef |grep httpd
ps -ef |grep httpd
0 4182 1 0 Mon01PM ?? 0:01.16 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
501 4183 4182 0 Mon01PM ?? 0:00.00 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
501 4189 4182 0 Mon01PM ?? 0:00.02 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
501 24659 24648 0 12:33AM ?? 0:00.00 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 24661 24648 0 12:33AM ?? 0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 24662 24648 0 12:33AM ?? 0:00.00 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
then you can do
$/opt/homebrew/opt/httpd/bin/httpd -V Server version: Apache/2.4.48 (Unix) Server built: Jul 6 2021 20:11:03 Server's Module Magic Number: 20120211:105 Server loaded: APR 1.7.0, APR-UTIL 1.6.1 Compiled using: APR 1.7.0, APR-UTIL 1.6.1 ...
you can check the config syntax with
httpd -t
check which services use port 80
sudo lsof -i -P | grep LISTEN
Access the config from /private/etc/apache2/httpd.conf ### /opt/homebrew/etc/httpd/httpd.conf ( homebrew ) ->

start the server
/opt/homebrew/bin/httpd -k start
add Virtual Hosts . Create a local dev Apache Mysql PHP Setup on Mac OS X – add Virtual Hosts ‣ Digital Zoom Studio
add PHP . Create a local dev Apache Mysql PHP Setup on Mac OS X – add PHP ‣ Digital Zoom Studio
add mySQL . Create a local dev Apache Mysql PHP Setup on Mac OS X – add MySql ‣ Digital Zoom Studio
add XDebug . create a local dev Apache Mysql PHP Setup on Mac OS X – add XDebug ‣ Digital Zoom Studio
Disable the Mac OS X System Apache
See if the
sudo launchctl list | grep httpd
If the output is
- 0 com.apple.httpd
Then Apache system is loaded. You can unload it with:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
Explanation:
- -w tells launchd to disable the job permanently (until re-enabled).
- This disables /usr/sbin/httpd from launching on boot or manually.
Confirm with:
sudo launchctl list | grep httpd
Check if the system apache is running and quizas kill the process
ps aux | grep httpd
You can start homebrew httpd with:
/opt/homebrew/opt/httpd/bin/httpd -k start
FAQ:
What is the difference between apachectl and httpd ?
apachectl is a wrapper over httpd and just sets some environment variables and adds further functionality, like configtest, more in detail here. httpd.worker is like httpd but with the worker module enabled.
Where to find logs for troubleshooting ?
you can find them in ErrorLog “/private/var/log/apache2/error_log”
or check
tail -n 30 $(brew --prefix)/var/log/httpd/error_log
Check homebrew prefix
brew --prefix
I am getting could not bind to address error
(48)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(48)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
use this command
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo apachectl -k restart
I get forbidden 403 when I access any page
apachectl is a wrapper over httpd and just sets some environment variables and adds further functionality, like configtest, more in detail here. httpd.worker is like httpd but with the worker module enabled.
DocumentRoot is /opt/homebrew/var/www
The default ports have been set in /opt/homebrew/etc/httpd/httpd.conf to 8080 and in
/opt/homebrew/etc/httpd/extra/httpd-ssl.conf to 8443 so that httpd can run without sudo.
To start httpd now and restart at login:
brew services start httpd
Or, if you don’t want/need a background service you can just run:
/opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
Or, if you don’t want/need a background service you can just run:
/opt/homebrew/opt/php/sbin/php-fpm --nodaemonize
Default Apache
You can uninstall default apache
# Stop system Apache (if running)
sudo apachectl stop
# Unload it from launchd so it doesn’t auto-start
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null