2024年3月14日木曜日

ローカルサーバー環境ツール「MAMP」の php バージョンを追加する方法(Mac編 - php 8.3.4 と php8.2.17 の複数バージョン)

Mac で手軽に PHP を利用したウェブサイトのチェックをする場合、ウェブページにあるフォルダにて「php -S localhost:8888」コマンドを実行して、localhost:8888 にアクセスするということはたまにします。

しかしながら、MySQLなどデータベース絡みになってくると、それだけではうまくいきません( WordPress など )。そうした場合には、ローカルサーバー環境ツールを使うことも多いかと思います。ここでは MAMP というツールで、MAMP側が提供していない PHP バージョンを追加する方法を備忘録としてまとめておきます。

2024年3月14日時点で、MAMP 6.9は PHP 8.2.0 が最新になっています。
ここでは、具体的に PHP 8.3.3 と PHP 8.2.16 2つのバージョンを追加してみます。

2024年3月15日時点で、PHP 8.3.4 と PHP 8.2.17 がリリースされていたので、これに対応するよう加筆修正しました。

検証環境

  • macOS 14.4
  • MAMP 6.9
あらかじめ、MAMP 6.9 がインストールされているものとします。

用語説明


ターミナルアプリから「***」を実行


内蔵ディスクの 「アプリケーション」フォルダ > 「ユーティリティ」フォルダにある「ターミナル」アプリを起動した上で、*** を入力して「Enter」キーを押して、***を実行することを意味します。

例:ターミナルアプリから「/opt/homebrew/bin/php -v」を実行

下記のようにターミナルアプリを起動して、/opt/homebrew/bin/php -vを入力すると赤枠部分の入力となります。ここで Enter ボタンを押すと実行されます。ここでは、赤枠の下側にあるように、メッセージが出てきます。これは PHPのバージョンを調べるときにつかいます。


PHP 8.3.4(最新版)のインストールと MAMPへの追加


PHP 8.3.4(最新版) のインストール


1. 下記を参考に、HomeBrew をインストールします(インストールしていない場合)

2. ターミナルアプリから「brew install php」を実行して PHP 8.3.4 をインストールします。
もし HomeBrew をインストールしていて、上記コマンドにて php をインストールしたことがあるなら、「brew upgrade php」を実行して最新版へアップグレードしてみてください。
*実際には HomeBrewがサポートする最新の PHPがインストールされます。

3. ターミナルアプリから「brew search php」を実行して、php にチェックが入っていることを確認してみてください。


4. ターミナルアプリから「/opt/homebrew/bin/php -v」を実行して、PHP 8.3.3がインストールされたことを確認してみてください。

PHP 8.3.4 (cli) (built: Mar 12 2024 23:42:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.4, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.4, Copyright (c), by Zend Technologies

MAMP への追加


1. /opt/homebrew/Cellar/php/8.3.4 を /Applications/MAMP/bin/php/ にコピーし、そのフォルダ名を「php8.3.4」に変更します。

実際にどのバージョンかは、ターミナルアプリから「ls /opt/homebrew/Cellar/php」を実行して確認しておいてください。

ターミナルアプリから「cp -rp /opt/homebrew/Cellar/php/8.3.4 /Applications/MAMP/bin/php/php8.3.4」を実行するとコピーして名前変更できる。

他の方法としては下記のように、双方のフォルダを開いてコピーしてもよい。
  1. ターミナルアプリから「open /opt/homebrew/Cellar/php」を実行し、/opt/homebrew/Cellar/phpフォルダを開く
  2. ターミナルアプリから「open /Applications/MAMP/bin/php」を実行し、/Applications/MAMP/bin/php を開く
  3. 「1」で開いたフォルダにある「8.3.4」を、「2」で開いたフォルダへコピーする
    Option キーを押しながら、フォルダをドラッグ&ドロップ
  4. 8.3.4 の名前を php8.3.4 に変更する。
2. /opt/homebrew/lib/httpd/modules フォルダ を、/Applications/MAMP/bin/php/php8.3.4/ へコピーする

ターミナルアプリから「cp -rp /opt/homebrew/lib/httpd/modules /Applications/MAMP/bin/php/php8.3.4/」を実行するとコピーできる。

3. /Applications/MAMP/bin/php/ フォルダを開きます
ターミナルアプリから「open /Applications/MAMP/bin/php/」を実行しても開くことができます。

MAMP無料版は、このフォルダにあるうち2つのみを認識します。
a. 一番新しいバージョン
b. 一番新しいバージョンより1つ前のメジャーバージョンの最新版
c. b. がなければ一番新しいバージョンより1つ前

例:下記の場合、php7.4.33 と php8.3.4 が選択
php7.4.33
php8.2.0
php8.3.4

例:下記の場合、php8.2.0 と php8.3.4 が選択
php8.2.0
php8.3.4

この調整(利用したいバージョン)は、 /Applications/MAMP/bin/php/ に archive フォルダでも作成して、不要なバージョンをそこにいれておくことです。

4. php.ini (PHPの環境設定)を変更する(WordPressを使っている場合)

下記のファイルを変更します。
/opt/homebrew/etc/php/8.3/php.ini

ターミナルからだと、下記のコマンドで直接テキストエディタでファイルを開くことができます。
open -a textedit /opt/homebrew/etc/php/8.3/php.ini

設定前
max_execution_time = 30

設定後
max_execution_time = 180

上記は WordPress のコアアップデートに時間がかかるとエラーになって更新できないことがあったため。下記については、WordPress に割り当てているメモリを大きくしていることを想定。

設定前
memory_limit = 128M

設定後
memory_limit = 256M

5. MAMPを起動します。

下記のように PHP version について 8.3.4 を選択して、Startボタンを押して起動します。
*ポートをデフォルトから変更している場合には、Start ボタンの前に、MAMP の Preferences から設定をしなおす必要があります。


6. Apache に PHP 8.3.4 が組み込まれているかどうか確認する
/Applications/MAMP/htdocs/test.php をテキストエディとなどメモアプリで作成して、
<?php phpinfo(); ?> を入力して保存します。
http://localhost:8888/test.php にアクセスします。

下記のように、PHP 8.3.4 が Webサーバー(上記の場合 Apache)に組み込まれていることを確認します。


PHP 8.2.17(最新版以外)のインストールと MAMPへの追加


*最新版以外については下記のようにします。

PHP 8.2.17(最新版以外) のインストール


1. 下記を参考に、HomeBrew をインストールします(インストールしていない場合)

2. ターミナルアプリから「brew search php」を実行して、インストール可能なバージョンをチェックします。今回は php8.2系となります(下図ではすでに php8.2 をインストール済みになっていますが、インストールしていないものと扱ってください)


3. ターミナルアプリから「brew install php@8.2」を実行して PHP 8.2.17 をインストールします。
もし HomeBrew をインストールしていて、上記コマンドにて php 8.2 系をインストールしたことがあるなら(たとえば PHP 8.2.10 が入っているとか)、「brew upgrade php@8.2」 として最新版へアップグレードしてみてください。

4. ターミナルアプリから「brew search php」を実行して、php@8.2 にチェックが入っていることを確認してみてください。

実際にどのバージョンかは、ターミナルアプリから「ls /opt/homebrew/Cellar/php@8.2」を実行して確認しておいてください。
以下、/opt/homebrew/Cellar/php@8.2/8.2.17 にインストールされているとします。

5. ターミナルアプリから「/opt/homebrew/Cellar/php@8.2/8.2.17/bin/php -v」を実行して、PHP 8.2.17 がインストールされたことを確認してみてください。

PHP 8.2.17 (cli) (built: Mar 12 2024 14:26:30) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.17, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.17, Copyright (c), by Zend Technologies

上記、バージョンが異なると数字がかわります。
他のバージョンをインストールした場合、/opt/homebrew/Cellar/ フォルダ以下に複数インストールした PHP が入るので、そちらから探してみてください。

MAMP への追加


1. /opt/homebrew/Cellar/php@8.2/8.2.17 を /Applications/MAMP/bin/php/ にコピーし、そのフォルダ名を「php8.2.17」に変更します。

ターミナルアプリから「cp -rp /opt/homebrew/Cellar/php@8.2/8.2.17 /Applications/MAMP/bin/php/php8.2.17」を実行するとコピーして名前変更できる。

他の方法としては下記のように、双方のフォルダを開いてコピーしてもよい。
  1. ターミナルアプリから「open /opt/homebrew/Cellar/php@8.2」を実行し、/opt/homebrew/Cellar/php@8.2フォルダを開く
  2. ターミナルアプリから「open /Applications/MAMP/bin/php」を実行し、/Applications/MAMP/bin/php を開く
  3. 「1」で開いたフォルダにある「8.2.17」を、「2」で開いたフォルダへコピーする
    Option キーを押しながら、フォルダをドラッグ&ドロップ
  4. 8.2.17 の名前を php8.2.17 に変更する。
2. /opt/homebrew/Cellar/php@8.2/8.2.17/lib/httpd/modules フォルダ を、/Applications/MAMP/bin/php/php8.2.17/ へコピーする

ターミナルアプリから「cp -rp /opt/homebrew/Cellar/php@8.2/8.2.17/lib/httpd/modules /Applications/MAMP/bin/php/php8.2.17/」を実行するとコピーできる。

3. /Applications/MAMP/bin/php/ フォルダを開きます
ターミナルアプリから「open /Applications/MAMP/bin/php/」を実行しても開くことができます。

MAMP無料版は、このフォルダにあるうち2つのみを認識します。
a. 一番新しいバージョン
b. 一番新しいバージョンより1つ前のメジャーバージョンの最新版
c. b. がなければ一番新しいバージョンより1つ前

例:下記の場合、php7.4.33 と php8.3.4 が選択
php7.4.33
php8.2.0
php8.2.17
php8.3.4

例:下記の場合、php8.2.17 と php8.3.4 が選択
php8.2.17
php8.3.4

この調整(利用したいバージョン)は、 /Applications/MAMP/bin/php/ に archive フォルダでも作成して、不要なバージョンをそこにいれておくことです。

4. php.ini (PHPの環境設定)を変更する(WordPressを使っている場合)

下記のファイルを変更します。
/opt/homebrew/etc/php/8.2/php.ini

ターミナルからだと、下記のコマンドで直接テキストエディタでファイルを開くことができます。
open -a textedit /opt/homebrew/etc/php/8.2/php.ini

設定前
max_execution_time = 30

設定後
max_execution_time = 180

上記は WordPress のコアアップデートに時間がかかるとエラーになって更新できないことがあったため。下記については、WordPress に割り当てているメモリを大きくしていることを想定。

設定前
memory_limit = 128M

設定後
memory_limit = 256M

5. MAMPを起動します。
下記のように PHP version について 8.2.17 を選択して、Startボタンを押して起動します。
*ポートをデフォルトから変更している場合には、Start ボタンの前に、MAMP の Preferences から設定をしなおす必要があります。


6. Apache に PHP 8.2.17 が組み込まれているかどうか確認する
/Applications/MAMP/htdocs/test.php をテキストエディとなどメモアプリで作成して、
<?php phpinfo(); ?> を入力して保存します(すでに用意していたら不要です)
http://localhost:8888/test.php にアクセスします。

下記のように、PHP 8.2.17 が Webサーバー(上記の場合 Apache)に組み込まれていることを確認します。


付録A. HomeBrewでインストールした php について php コマンドで切り替える方法

1. ターミナルアプリから「brew unlink php」を実行して、/opt/homebrew/bin/php のシンボリックリンクを解除する

表示されるメッセージ:Unlinking /opt/homebrew/Cellar/php/8.3.4... 24 symlinks removed.

2. ターミナルアプリから「brew link php@8.2」を実行して、/opt/homebrew/bin/php へ php8.2 へのシンボリックリンクを設定する

表示されるメッセージ:Linking /opt/homebrew/Cellar/php@8.2/8.2.17... 25 symlinks created.

3. ターミナルアプリから「/opt/homebrew/bin/php -v」を実行して、PHP 8.2.17が実行されていることを確認する。

PHP 8.2.17 (cli) (built: Mar 12 2024 14:26:30) (NTS)
...

もとに戻すとき(インストールされている最新版へ戻す)


1. ターミナルアプリから「brew unlink php」を実行して、/opt/homebrew/bin/php のシンボリックリンクを解除する

2. ターミナルアプリから「brew link php」を実行して、/opt/homebrew/bin/php へ php最新版 へのシンボリックリンクを設定する

3. ターミナルアプリから「/opt/homebrew/bin/php -v」を実行して、PHPの最新版が実行されていることを確認する。

付録B. MAMP の phpmyadmin にアクセス出来ない場合



こちらのエラーがでたときには、下記の設定を変更してみてください。

/Applications/MAMP/bin/phpMyAdmin5/config.ini.php

変更前
$cfg['Servers'][$i]['host']          = 'localhost'; // MySQL hostname or IP address

変更後
$cfg['Servers'][$i]['host']          = '127.0.0.1'; // MySQL hostname or IP address

上記ファイルをターミナルから直接開きたい場合には、下記のコマンドを実行してみてください。

open -a textedit /Applications/MAMP/bin/phpMyAdmin5/config.inc.php 

付録C. WordPress にアクセスできない場合



こちらのエラーがでたときには、下記の設定を変更してみてください。

wp-config.php

変更前
define('DB_HOST', 'localhost');

変更後
define('DB_HOST', '127.0.0.1:8889');

8889 については MAMPの Preferences の mysqlのポート番号を参考にしてみてください。デフォルトは 8889 になっています。


2024年3月14日 @kimipooh
2024年3月15日 加筆修正
2024年4月20日 加筆