если нужно локально запускать сайты на Mac – можно включить встроенный Apache и поставить PHP через Homebrew (PHP в macOS начиная с Monterey больше нет), либо поставить весь стек (httpd + php + mysql) через Homebrew – так проще контролировать версии. В статье: команды, что править в httpd.conf, как включить PHP, как сделать виртуальные хосты и права для _www, как смотреть логи и решать типичные проблемы.
Короткая сводка вариантов – выбирайте, что вам удобнее
- Вариант A – использовать встроенный Apache (быстро, ничего не ставим). Работает в Big Sur / Ventura / Sonoma и т.д
- Вариант B – Homebrew httpd + php + mysql (лучше для разработчика, можно управлять версиями, не лезть в системные файлы).
Я опишу оба пути – сначала быстрое включение встроенного Apache, потом как добавить PHP (через Homebrew) и как сделать виртуальные хосты. В конце – типичные ошибки и как смотреть логи.
1. Включаем встроенный Apache (быстро и просто)
Открой Terminal и выполни:
# запустить Apache
sudo apachectl start
# остановить
sudo apachectl stop
# перезагрузить после правок
sudo apachectl restart
# проверить конфиг на синтаксис
sudo apachectl -t
Если в браузере открыть http://localhost/ – должна появиться страница «It works!» или стартовая страница.
Если macOS новая (Ventura / Sonoma), учтите что по-умолчанию Apache есть, но доступ к домашним папкам _www может быть ограничен – об этом ниже. Apple Support Community+1
2. Где конфиг Apache и что изменить (DocumentRoot → ~/Sites)
Файл конфигурации системного Apache:
/etc/apache2/httpd.conf
Откройте в редакторе:
sudo nano /etc/apache2/httpd.conf
Обязательные правки, чтобы сделать ~/Sites корнем:
- раскомментировать или установить:
ServerName localhost
- изменить
DocumentRoot:
DocumentRoot "/Users/ВАШ_ЛОГИН/Sites"
- изменить
<Directory "/Library/WebServer/Documents">на:
<Directory "/Users/ВАШ_ЛОГИН/Sites">
- убедиться, что есть:
DirectoryIndex index.php index.html
- разрешить виртуальные хосты:
Include /private/etc/apache2/extra/httpd-vhosts.conf
Сохраните и перезапустите:
sudo apachectl restart
3. PHP: что с ним в современных macOS и как добавить (важно)
Начиная с macOS Monterey (12) Apple удалила встроенный PHP, поэтому если вы на Monterey и новее – PHP придётся ставить вручную (через Homebrew). Если у вас старый macOS – возможно PHP уже есть, но лучше поставить свежий через Homebrew.
Установка PHP через Homebrew (рекомендуется)
Если Homebrew ещё нет:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Установить PHP и запустить:
brew install php
brew services start php
После установки PHP можно подключить его к Apache. Проще сделать так – использовать PHP-FPM (Homebrew ставит его) и прописать в httpd.conf (или в отдельном vhost) блок для проксирования .php к php-fpm. Пример (в httpd.conf раскомментируйте/добавьте):
# Модуль proxy и proxy_fcgi должны быть включены
LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_fcgi_module libexec/mod_proxy_fcgi.so
# Далее в vhost или глобально:
<FilesMatch \.php$>
SetHandler "proxy:unix:/opt/homebrew/var/run/php-fpm.sock|fcgi://localhost/"
</FilesMatch>
Путь к сокету может отличаться – посмотрите brew info php или /opt/homebrew/var/run/ на Apple Silicon, или /usr/local/var/run на Intel.
Если вы не хотите возиться с этим – можно поставить Homebrew httpd и подключить PHP модуль к нему, но чаще используют встроенный Apache + Homebrew PHP-FPM.
4. MySQL / MariaDB / phpMyAdmin (быстро через Homebrew)
brew install mysql
brew services start mysql
# Если хотите MariaDB:
brew install mariadb
brew services start mariadb
# Для phpMyAdmin
brew install phpmyadmin
# Затем настройте alias или vhost к phpmyadmin каталогу
5. Создаём папку Sites и даём доступ Apache (_www)
Если используете ~/Sites как корень, создайте папку и дайте Apache-ю (пользователь _www) права читать:
mkdir -p ~/Sites
# дать доступ исполнителю _www (важно на Ventura / Sonoma, новые правила безопасности)
sudo chmod +a "_www allow execute,read,search" ~
# или конкретно на Sites
sudo chmod -R 755 ~/Sites
sudo chown -R $(whoami):staff ~/Sites
Замечание: в новых macOS нужно дать _www права на выполнение по всему пути – иначе Apache не сможет войти в home. Apple Support Community
6. Виртуальные хосты – как сделать локальный сайт http://test/
- В
/etc/hostsдобавьте:
127.0.0.1 test
- Откройте
/private/etc/apache2/extra/httpd-vhosts.confи добавьте:
<VirtualHost *:80>
ServerName test
DocumentRoot "/Users/ВАШ_ЛОГИН/Sites/test"
<Directory "/Users/ВАШ_ЛОГИН/Sites/test">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
- Перезагрузите Apache:
sudo apachectl restart
- Создайте
~/Sites/test/index.php:
<?php
phpinfo();
Откройте http://test/ и увидите phpinfo или вашу страницу.
7. Альтернатива: поставить все через Homebrew (httpd + php + mysql)
Если хотите полностью локальный стек, не трогая системный Apache:
brew install httpd
brew services start httpd
# назначить DocumentRoot в /opt/homebrew/var/www или ваш ~/Sites
# и установить php и mysql как выше
Преимущества: версии из Brew обновляются, не ломаете системные файлы, проще отключить автозапуск системного Apache.
8. Логи и отладка – куда смотреть когда что-то не работает
- Apache лог ошибок:
/private/var/log/apache2/error_log
- Проверить синтаксис конфигов:
sudo apachectl -t
- Посмотреть, что слушает порт 80:
sudo lsof -i :80
Если Apache не стартует – открывайте error_log и читайте строку с ошибкой, чаще всего это права, занятый порт или синтаксис.
9. Частые проблемы и быстрые решения
- PHP не работает → скорее всего PHP не установлен (Monterey+). Установите через Homebrew и подключите php-fpm.
- 403 Forbidden при заходе в
~/Sites→ проверьте права на домашнюю папку и дайте_wwwexecute/read доступ. Apple Support Community - Порт 80 занят → проверьте
sudo lsof -i :80, возможно, уже запущен другой httpd (nginx, brew httpd). Остановите его. - After editing httpd.conf Apache won’t start → запустите
sudo apachectl -tи посмотрите логи.
10. Резюме / что выбрать
- Хочешь быстро – включил
sudo apachectl start, поставил PHP через Brew, сделал~/Sitesи забыл. - Хочешь контроль и отдельный стек – ставишь весь httpd/php/mysql через Homebrew.
- Если у тебя Apple Silicon – Homebrew в
/opt/homebrew, пути отличаются.
Если что не получилось – заходите в нашу Telegram-группу, там люди делятся рабочими решениями и подсказками, можно скинуть скрин логов и мы поможем
👉 https://t.me/NibblitClub










Здавствуйте. Никак не получается настроить все правильно. http://localhost работает. Все другое нет. Проверил все 100 раз.
Вот ошибки.Спасибо!
[Sat Oct 15 18:37:58.937155 2016] [mpm_prefork:notice] [pid 2578] AH00163: Apac$
[Sat Oct 15 18:37:58.937445 2016] [core:notice] [pid 2578] AH00094: Command lin$
[Sat Oct 15 18:44:58.203894 2016] [mpm_prefork:notice] [pid 2578] AH00169: caug$
[Sat Oct 15 18:45:07.396358 2016] [mpm_prefork:notice] [pid 2706] AH00163: Apac$
[Sat Oct 15 18:45:07.396504 2016] [core:notice] [pid 2706] AH00094: Command lin$
[Sat Oct 15 18:58:34.899385 2016] [mpm_prefork:notice] [pid 2706] AH00169: caug$
Проверьте, насколько верно записали данные в файл:
/private/etc/apache2/extra/httpd-vhosts.conf
У меня, например, скопировалось как:
<VirtualHost *:80>А должно быть:
То есть появились лишние символы. Пройдитесь по всем строчкам и исправьте остальное.
спасибо проверю!
В комментарии строчка отобразилась по-другому, чем писал. Вторая вообще не показалась…
Смысл в том, что возможно пример кода для httpd-vhosts.conf, приведённый автором может скопироваться неверно. Отсюда могут и ошибки.
P.S. Автор, спасибо, всё заработало. Впрочем, пришлось немного поломать голову – как писал выше, некоторый код неверно отобразился.
не очень понимаю что работает а что нет. напишите более подробно
Спасибо! У меня получилось. Но с трудом)
В статье не сказано что надо раскомментировать это:
Include /private/etc/apache2/extra/httpd-vhosts.conf
И надо удалить примеры виртуальных хостов написать свои, к примеру:
ServerAdmin webmaster@school.loc
DocumentRoot “/Users/sbeka/Sites/school.loc”
ServerName school.loc
AllowOverride All
Order allow,deny
Allow from all
Красавчик автор
Не работает, ошибка:
Forbidden
You don’t have permission to access / on this server.
Помогла правка имя сервера в: sudo nano /private/etc/apache2/extra/httpd-vhosts.conf
Код:
ServerAdmin webmaster@test
DocumentRoot “/Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/sites”
ServerName localhost
AllowOverride All
Order allow,deny
Allow from all
Помучался но все получилось) Хорошо до комментариев промотал и прочитал. Спасибо за труды!!!! как раз сейчас нужен локальный сервер для учебы. 💡 💡 💡