macOS Monterey以降でApacheとPHPを動かす

ポイント

  • macOS Monterey以降はPHPがバンドルされなくなりました
    • macOSをアップデートするとPHPは削除されます
  • PHPはHomebrewを使って別途インストールする必要があります
  • ただし、macOS標準のApacheはHomebrewでインストールしたPHPを受け付けません
    • Homebrewでhttpdを別途インストールする必要があります

Homebrewをインストール

PHPをインストール

インストールできるバージョンを確認

$ brew search php

PHP7.4をインストールする場合

$ brew install php@7.4

シンボリックリンクの作成

$ brew link php

PATHを通す(下記はzshの場合)

$ echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
$ echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc

バージョン(インストール)確認

$ php -v

Apache をインストール

$ brew install httpd

macOS標準のApacheを止める

$ sudo launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

起動

$ brew services start httpd

停止・再起動

$ brew services stop httpd
$ brew services restart httpd

Apache 設定ファイルの修正

場所

/usr/local/etc/httpd/httpd.conf
ポート80を追加(デフォルトは8080)
#Listen 12.34.56.78:80
Listen 8080
Listen 80(←これを追加)

Webコンテンツがある場所を設定

DocumentRoot "/usr/local/var/www"
<Directory "/usr/local/var/www">

この中の2箇所を修正(例:/Library/WebServer/Documents )

rewrite_module を有効化(頭の#を削除)

#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

PHP読み込み

LoadModule が並んでいる辺りに追加(PHP7.4の場合)

LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
<IfModule php7_module>
  AddType application/x-httpd-php .php
</IfModule>

PHP8.0の場合(php8_module ではないので注意)

LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp.so
<IfModule php_module>
  AddType application/x-httpd-php .php
</IfModule>

ファイル末尾に追加

<IfModule php7_module>
PHPINIDir /usr/local/etc/php/7.4/
</IfModule>

PHP8.0の場合(php8_module ではないので注意)

<IfModule php_module>
PHPINIDir /usr/local/etc/php/8.0/
</IfModule>

indexファイル設定

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

DirectoryIndex index.php index.html に変更