MacOS12でPHPが使えなくった時の対処方法

MacOS12でPHPがMacOS自体に組み込まれなくなり自分でインストールしないと使えなくなりました。

1. phpをインストールする

$ brew -v
Homebrew 3.4.6

brewのバージョンを確認

$ brew upgrade

念のためbrewをアップデートしておく

$ brew install php@7.4
Homebrew 3.4.6

phpをインストール

If you need to have php@7.4 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> /Users/***/.bash_profile
  echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> /Users/***/.bash_profile

インストール後pathを通すように言われるのでpathを通しましょう

$php -v
PHP 7.4.28 (cli) (built: Mar  1 2022 09:40:23) ( NTS )
Copyright (c) The PHP Group

もしpathがうまく通らない場合は

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

こちらを試してみてください

うまくphpのバージョンが確認できればphpのインストールは成功です

2. apacheをインストールする

$ brew install httpd

apacheをインストールします

この時MacOSに既に入っているapacheとは別のapacheが入ることに注意しましょう。

$ sudo vim /usr/local/etc/httpd/httpd.conf

brewでインストールしたapacheのhttpd.confを修正します。

#ServerName www.example.com:8080
ServerName localhost:80

ServerNameをlocalhost:80に設定します。

#DocumentRoot "/usr/local/var/www"
#<Directory "/usr/local/var/www">
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">

localhostのDocumentRoot(ルートディレクトリ)を変更します。
任意の場所でOKですが今回はMacOSにデフォルトで入っているapacheと同じ場所にしています。

#php7.4 
LoadModule php7_module /usr/local/Cellar/php@7.4/7.4.28_1/lib/httpd/modules/libphp7.so

# .php で php を実行できるように MIME タイプの追加 ( <IfModule mime_module> 内 )
AddType application/x-httpd-php .php

最後にphpを使えるようにモジュールを読み込みます。

libphp7.soはphpのバージョンによってpathが変わるので注意してください。

AddType application/x-httpd-php .phpは<IfModule mime_module>の中にに追加します。

$ sudo brew services restart httpd

apacheのhttpdconfの修正を適応するため再起動します。

これでphpinfoなどが表示されれば無事終了です。

3. MacOSのapacheとHomeBrewのapacheの違い

sudo apachectl start
sudo apachectl restart
sudo apachectl stop
sudo vim /etc/apache2/httpd.conf
sudo apachectl configtest

MacOSのapacheは上記になります。
configtestが使えるのでbrewのapacheのhttpd.confをいじってうまくいかない時はこちらにコピペしてconfigtestを試すのもありかもしれません。

sudo brew services start httpd
sudo brew services restart httpd
sudo brew services stop httpd
sudo vim /usr/local/etc/httpd/httpd.conf

brewのapacheが上記になります。

4. 起動中のapacheがMacOSかbrewか判断したい時

$ apachectl -V

これで表示される情報にhttpd.confのpathが記載されているので判断できます。

$ ps aux | grep httpd

他にもこのようなコマンドでタスクが起動しているかで確認ができます。
こちらを使えばどちらが起動しているか、あるいはどちらも起動していないかなど調べることができます。