Работа со встроенным PHP в ОС macOS до версии Monterey
PHP поставляли с операционными системами macOS с macOS 10.0.0 X по macOS 12.0.0 Monterey.
На стандартном веб-сервере PHP включают путём удаления комментариев в ряде
строк в конфигурационном файле httpd.conf веб-сервера Apache,
тогда как CGI- и (или) CLI-версии PHP-интерпретатора
поставляли включёнными по умолчанию, и в этих режимах PHP оставался доступным для терминальных программ.
Включение PHP согласно приведённой ниже инструкции предназначено для быстрой
настройки локальной среды разработки. Разработчики языка PHP настоятельно рекомендуют
каждый раз обновлять PHP до самой новой стабильной версии. Аналогично
большей части программного обеспечения, разработка которого продолжается,
новые версии выпускают, чтобы исправить ошибки и добавить новые функции, то же касается
и PHP. Читайте документацию по установке PHP в ОС macOS, которая
описывает подробности. Следующие инструкции составили
для начинающих разработчиков и они описывают стандартную установку,
которая помогает быстро приступить к работе. Пользователям рекомендуют скомпилировать
или установить из репозитория самую новую версию PHP.
Стандартная установка PHP в виде серверного модуля mod_php,
который включается для стандартного веб-сервера macOS (сервер по умолчанию доступен
через системные настройки), включает следующие шаги:
-
Найдите и откройте конфигурационный файл Apache. По умолчанию
файл лежит по пути /private/etc/apache2/httpd.conf
Поиска файла через файловый менеджер
Finder
или встроенный механизм поиска Spotlight
иногда затруднён, поскольку файл лежит
в приватном пространстве и принадлежит пользователю root
.
Замечание:
Открыть этот файл помогает консольный редактор наподобие nano
,
который запускают через терминал. Поскольку файл принадлежит
пользователю root
, потребуется выполнить команду sudo
,
чтобы открыть файл. Команда sudo
повышает привилегии текущего пользователя
до пользователя root
. Просто запустите приложение Terminal
,
введите команду sudo nano /private/etc/apache2/httpd.conf
и введите пароль,
когда команда запросит его.
Полезные команды редактора nano: ^w
(найти),
^o
(сохранить) и ^x
(закрыть),
где ^
— клавиша Ctrl.
Замечание:
Версии macOS до 10.5 содержат устаревшие версии PHP и веб-сервера Apache,
поэтому конфигурационный файл иногда лежит по пути
/etc/httpd/httpd.conf.
-
В текстовом редакторе найдите следующие строки
и удалите символ # из начала строки, чтобы удалить комментарии.
Эти строки часто находятся в разных местах файла:
# LoadModule php5_module libexec/httpd/libphp5.so
# AddModule mod_php5.c
Запомните путь к файлу, поскольку позднее, при сборке PHP,
эти строки иногда требуется изменять.
-
Убедитесь, что файлы с расширениями вроде .php,
.html и .inc
обрабатываются как PHP-скрипты.
Поскольку с версии Mac Panther конфигурационный файл httpd.conf
уже содержит следующие инструкции, после включения PHP сразу начнёт автоматически обрабатывать
файлы с расширением .php.
<IfModule mod_php5.c>
# PHP обработает файлы с расширением .php и .phps., если модуль PHP загрузили
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# Часто требуется, чтобы PHP рассматривал файл index.php
# как страницу по умолчанию, если её прямо не указали в URL-адресе.
# Следующие инструкции делают файлы index.html и index.php файлами по умолчанию
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
Замечание:
До macOS 10.5 Leopard в состав ОС включали PHP 4, а не PHP 5,
поэтому в инструкциях для 4-й версии просто заменяют 5 на 4.
-
Убедитесь, что директива DirectoryIndex загружает индексный файл по умолчанию.
Это поведение задают в файле httpd.conf. Часто указывают
файлы index.php и index.html.
По умолчанию веб-сервер включает файл index.php, который отключают, если нужно.
-
Определите местоположение файла php.ini или оставьте настройки по умолчанию.
Стандартный путь файла конфигурации PHP в ОС macOS —
/usr/local/php/php.ini и вызов
функции phpinfo() выведет информацию, которая соответствует настройкам в файле.
PHP применяет для директив конфигурации значения по умолчанию,
если PHP не нашёл и не загрузил файл php.ini.
Смотрите также раздел FAQ, который касается
поиска файла php.ini.
-
Расположение директивы
DocumentRoot
и установка корневого каталога документов веб-сервера.
DocumentRoot — корневой каталог файлов веб-сервера. Файлы в этом каталоге
обслуживает веб-сервер, поэтому перед выводом в браузер веб-сервер обработает
PHP-файлы как файлы PHP-скриптов. Стандартный путь по умолчанию —
/Library/WebServer/Documents, но когда требуется указать другой путь,
его изменяют в файле httpd.conf. Для отдельных пользователей
как альтернативу значению директивы DocumentRoot по умолчанию
устанавливают путь наподобие /Users/yourusername/Sites.
-
Создайте файл с функцией phpinfo().
Функция phpinfo() выводит информацию о PHP.
Создайте в директории, которую указали в директиве DocumentRoot, скрипт с таким кодом:
-
Перезапустите Apache и запросите через браузер файл, который создали прежде.
Для перезапуска веб-сервера запустите в терминале команду sudo apachectl graceful
или выполните перезапуск ПО Personal Web Server в системных настройках
macOS. По умолчанию локальные файлы загружаются в браузер
по URL-адресу наподобие
http://localhost/info.php или по DocumentRoot-пути
в локальной директории пользователя, которая примет вид:
http://localhost/~yourusername/info.php
Название CLI-версии двоичного файла PHP-интерпретатора,
или в более старых версиях CGI-версии,
соответствует названию языка — php и лежит по пути /usr/bin/php.
Откройте терминал, прочитайте раздел документации PHP
командная строка и запустите
команду php -v
, чтобы проверить установленную версию PHP.
Вызов функции phpinfo() также выведет эту информацию.
Anonymous ¶15 years ago
You only have to uncomment:
#LoadModule php5_module libexec/apache2/libphp5.so
This is gone:
# AddModule mod_php5.c
The statement in 3 was changed to:
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /private/etc/apache2/mime.types
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi
# For type maps (negotiated resources):
#AddHandler type-map var
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
Extra MIME types can either be added to the file /private/etc/apache2/mime.types or by using an AddType directive as commented on above.
10086 at xiaoi dot me ¶5 years ago
setup apache + php environment on macOS 10.12.6
step 1: start httpd by apachectl
> sudo apachectl start
step 2: find httpd.conf
> sudo apachectl -t -D DUMP_INCLUDES
step 3: edit conf, eg: /opt/local/etc/apache2/httpd.conf
> sudo vim /opt/local/etc/apache2/httpd.conf
step 4: Load php module before <IfModule unixd_module>, eg:
```
LoadModule php5_module /usr/libexec/apache2/libphp5.so
<IfModule unixd_module>
```
step 5: add mod_php5.c end of httpd.conf
```
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
```
step 6: save and quit
step 7: restart httpd
> sudo apachectl restart
step 8: write demo.php , test configuration
```
<?php
phpinfo();
?>
```
step 9: copy demo.php to "DocumentRoot", you can find by httpd.conf
step 10: visit demo.php
all done.