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