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 に変更

Apacheを再起動

$ sudo apachectl restart