macOS MontereyではPHPが標準バンドルされなくなってしまいました。
なので、インストール...したところApacheも手入れしなければいけなかったのでメモ書き。
1.Homebrewのインストール
まっさらのOSの場合を想定してまずはHomebrewをインストール。
Homebrewのサイトでインストールするためのコマンドをコピーできます。
$/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2.PHPをインストール
Homebrewのインストールが完了したら、引き続きPHPをインストールします。
入っていない筈ですが、一応PHPのバージョンチェックのコマンド。
$php -v
Command not foundが表示されると思います。
(もし自前で既にPHPを入れていた場合は現行のバージョンが表示されます)
インストールできるphpパッケージを確認します
$brew search php
いくつかPHPのバージョンが表示されるので、使いたいバージョンをインストール。
今回は8.0をインストールすることにします。
$brew install php@8.0
3.PHPのパスを通す
HomebrewでインストールしただけではPHPは使えず、パスを通してあげる必要があります。
今回は現行Macの標準になっているZshにパスを通します。
$echo 'export PATH="/usr/local/opt/php@8.0/bin:$PATH"' >> ~/.zshrc
これでターミナルを再起動するとパスが通ってPHPのコマンドが使える様になります。
早速インストールバージョンの確認。
$php -v
PHP 8.0.17 (cli) (built: Mar 18 2022 09:45:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.17, Copyright (c) Zend Technologies
with Zend OPcache v8.0.17, Copyright (c), by Zend Technologies
といった様に表示される筈です。
4.Apacheのインストール
引き続きHomebrewでApacheをインストールします。
$brew install httpd
インストールが完了したら、Mac標準のApacheを停止します。
基本的には勝手に起動していると思いますが、動いているか確認するには
$ps -ax | grep httpd
で確認。
131 ?? 0:07.12 /usr/sbin/httpd -D FOREGROUND
627 ?? 0:00.02 /usr/sbin/httpd -D FOREGROUND
25953 ?? 0:00.01 /usr/sbin/httpd -D FOREGROUND
39787 ttys002 0:00.00 grep httpd
/usr/sbin/httpd -D FOREGROUNDのような表示があれば動いています。
ちなみにapachectlで停止使用とすると
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using MacBookPro.local. Set the 'ServerName' directive globally to suppress this message
httpd (no pid file) not running
というエラーが出て停止できません。
今回は
$sudo -s launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist
$sudo -s launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
で停止させます。
ちなみに下はMacを起動したときに自動でApacheを起動させなくするコマンドです。
再度psコマンドで確認するとApacheが停止していると思います。
5. インストールしたApacheの起動
インストールと標準Apacheの停止が完了したらHomebrewでインストールしたApacheを起動します。
$brew services start httpd
psコマンドで起動していることを確認します。
6.Apacheの設定
これまでは/etc/apache2/httpd.cnfを編集してApacheの設定をしていましたが、Homebrewでインストールされた設定ファイルを編集します。
ファイルの場所は/usr/local/etc/httpd/httpd.cnfです。
以下の点を追加・修正します(バージョン等によって行は異なる可能性があります)
- 52行付近 Listen 8080の下にListen 80を追加
- 181行付近 行頭の#を削除してrewriteモジュールを有効にする
- 181行付近 LoadModuleの記述が並ぶ最後に以下を追記
LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp.so
<IfModule php_module>
AddType application/x-httpd-php .php
</IfModule> - 225行付近 行頭の#を削除して、www.exsample.com:8080をlocalhost:80に書き換える
- 248行付近 必要に応じてDocumentRootを変更(今回は/Library/WebServer/Documentsに設定)
またその直後にあるも同じディレクトリに書き換える - ファイル末尾に追記
<IfModule php_module>
PHPINIDir /usr/local/etc/php/8.0/
</IfModule>
ここまで記述したら保存してApacheを再起動する(ここはapachectlでOK)
$sudo -s apachectl restart
エラーなく起動し、所定のディレクトリに置いたphpinfo.phpをブラウザで確認できれば設定完了です
<?php
phpinfo();
?>