Установка веб-сервера Apache и PHP на Mac OS несколько отличается от процесса установки на Windows. Прежде всего следует отметить, что Mac OS уже по умолчанию имеет встроенный Apache. Однако начиная с версии macOS Monterey из операционной системы был удален PHP, который в предыдущих версиях устанавливался по умолчанию. Кроме того, настройка конфигурации встроенного веб-сервера несколько затруднена, каких-то пакетов может недостовать. И в этом случае более предпочтительный подход состоит в использовании пакетного менеджера Homebrew, который значительно облегчает установку и настройку всех необходимых компонентов. Поэтому рассмотрим установку и настройку Apache и PHP с помощью пакетного менеджера Homebrew.
Вначале надо установить сам пакетный менеджер Homebrew через терминал с помощью команды:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Чтобы убедиться, что Homebrew установлен, можно проверить его версию с помощью следующей команды:
brew --version
В этом случае терминал должен отобразить что-то наподобие:
Homebrew 3.3.1 Homebrew/homebrew-core (git revision 1362c572e16; last commit 2021-10-29)
Затем установим PHP с помощью следующей команды:
brew install php
Далее установим веб-сервер Apache с помощью следующей команды:
brew install httpd
После установки веб-сервера Apache вначале проверим его работоспособность. Для его запустим его с помощью следующей команды:
brew services start httpd
При удачном запуске веб-сервера мы сможем обратиться к нему, введя в адресную строку веб-браузера адрес http://localhost:8080. И в этом случае веб-браузер должен нам отобразить надпись "It works!":
Теперь настроим Apache. Для этого нам надо изменить файл конфигурации веб-сервера. В зависимости от архитектуры Mac расположение файла конфигурации будет отличаться:
Для архитектуры Intel это путь /usr/local/etc/httpd/httpd.conf.
Для архитектуры Apple M1 это путь /opt/homebrew/etc/httpd/httpd.conf.
Соответственно для изменения файла нам потребуется текстовый редактор. Можно использовать встроенный текстовый редактор типа TextEdit.
Если архитектура - Intel, введем в терминале следующую команду:
open -e /usr/local/etc/httpd/httpd.conf
Если архитектура - Apple M1, введем в терминале следующую команду:
open -e /opt/homebrew/etc/httpd/httpd.conf
Вначале изменим порт - по умолчанию он равен 8080. Для этого найдем следующую строку:
Listen 8080
Параметр Listen указывает на порт, по которому можно будет обращаться к веб-серверу. Заменим эту строку на следующую:
Listen 80
Далее настроим папку для файлов веб-сервера. По умолчанию это папка "/usr/local/var/www". Но изменим ее.
Создадим в папке текущего пользователя новую папку, которую назовем localhost. Например, в моем текущий пользователь называется eugene, поэтому папка документов веб-сервера будет иметь путь Users/eugene/localhost. Теперь установим эту папку в качестве каталога для файлов веб-сервера.
Важно: папка localhost должна открыта для записи и чтения, иначе Apache не сможет с ней работать. Открыть доступ к папке можно в свойствах папки.
Если архитектура Intel, найдем в файле следующие строки
DocumentRoot "/usr/local/var/www" <Directory "/usr/local/var/www">
Если архитектура Apple M1, найдем в файле следующие строки
DocumentRoot "/opt/homebrew/var/www" <Directory "/opt/homebrew/var/www">
Параметры DocumentRoot и Directory указывает на каталог файлов веб-сервера. Теперь изменим эти строки, передав данным параметрам наш выше созданный каталог:
DocumentRoot "/Users/eugene/localhost" <Directory "/Users/eugene/localhost">
Напоминаю, что вместо "eugene" в каждом конкретном случае будет идти имя текущего пользователя.
Затем установим имя сервера. Для этого найдем следующую строку:
#ServerName www.example.com:8080
Заменим эту строку на следующую:
ServerName localhost
Изменим пути файлам, в которые будут заноситься сведения об ошибках или посещении сайта.
Если архитектура Intel, найдем строку
ErrorLog "/usr/local/var/log/httpd/error_log"
Если архитектура Apple M1, найдем следующую строку
ErrorLog "/opt/homebrew/var/log/httpd/error_log"
И заменим ее на
ErrorLog "/Users/eugene/localhost/error.log"
Далее изменим путь к логу посещений. Если архитектура Intel, найдем строку
CustomLog "/Users/eugene/localhost/access_log" common
Если архитектура Apple M1, найдем следующую строку
CustomLog "/opt/homebrew/var/log/httpd/access_log" common
И заменим ее на
CustomLog "/Users/eugene/localhost/access_log" common
Таким образом, файл error.log
, в который записываются ошибки, и файл access.log
, в который заносятся все
данные о посещении веб-сайта, будут располагаться в папке c:/localhost.
Теперь свяжем Apache с PHP. Вначале нам надо узнать версию PHP. Для этого введем в терминал команду
php -v
Нам должно отобразиться что-то вроде следующего
PHP 8.1.1 (cli) (built: Jan 08 2022 08:25:03) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.1.1, Copyright (c) Zend Technologies with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
Здесь нас будут интересовать первые две цифры версии. В моем случае выше это 8.1. В зависимости от архитектуры компьютера также настройка PHP будет отличаться.
найдем в файле строку
#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
Если архитектура Intel, после этой строки добавим следующую
LoadModule php_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp.so
Если же архитектура Apple M1, добавим следующую
LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so
В данном случае добавляется модуль php. Обратите внимание на часть php@8.1. Поскольку в моем случае версия 8.1, соответственно я указываю данную версию модуля. То есть в итоге получится
#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so LoadModule php_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp.so // для Intel LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so // для Apple M1
Далее найдем блок <IfModule mime_module>:
<IfModule mime_module> # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type.
И под строкой <IfModule mime_module> добавим две строчки:
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
То есть должно получиться:
<IfModule mime_module> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type. #
В данном случае мы добавили поддержку для файлов с расширением .php
и .phps
.
И в конце найдем блок <IfModule dir_module>
:
<IfModule dir_module> DirectoryIndex index.html </IfModule>
И заменим его на следующий:
<IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
В данном случае мы определяем файлы, которые будут выполняться при обращении к корню файла или каталога. То есть по сути определяем главные страницы веб-сайта: index.html и index.php.
Это минимально необходимая конфигурация, которая нужна для работы с PHP.
Теперь наша задача - убедиться, что php подключен и работает правильно. Для этого перейдем в папку /Users/eugene/localhost, которую мы создали для хранения файлов веб-сервера, и добавим в нее обычный текстовый файл. Переименуем его в index.php и внесем в него следующее содержание:
<?php phpinfo(); ?>
В данном случае мы создали простейший скрипт, который выводит общую информацию о PHP.
Теперь перезапустим Apache. Для этого последовательно введем в терминале две следующих команды:
brew services stop httpd brew services start httpd
И после перезапуска веб-сервера обратимся к выше созданному скрипту index.php, набрав в строке браузера адрес http://localhost/index.php
Что тут произошло? При обращении к сайту на локальной машине в качестве адреса указывается http://localhost. Затем указывается имя ресурса, к которому идет обращение. В данном случае в качестве ресурса используется файл index.php. И так как в файле httpd.conf в качестве хранилища документов веб-сервера указан каталог /Users/eugene/localhost, то именно в этом каталоге и будет веб-сервер будет производить поиск нужных файлов.
И поскольку выше при конфигурировании мы указали, что в качестве главной страницы может использоваться файл index.php, то мы можем также обратиться к этому ресурсу просто http://localhost/
Таким образом, теперь мы можем создавать свои сайты на php на MacOS.
Как и для Windows, конфигурация php хранится в файле php.ini. На MacOS этот файл располагается по следующему пути:
/usr/local/etc/php/[версия]/php.ini
Например, я установил версию php 8.1.1, поэтому в моем случай файл php.ini располагается по пути "/usr/local/etc/php/8.1/php.ini". Соответственно, если мне необходимо его отредактировать в текстовом редакторе по умолчанию TextEdit, я могу ввести в терминал команду
open -e /usr/local/etc/php/8.1/php.ini