Tips

PHPbrewでの8.2.8のインストールとバージョン切り替え方法

PHPbrewで執筆時点で最新版のPHP8.2.8をインストールしました。以前に7.3.33をインストールしていたので、今回2バージョン目になります。複数バージョンの切り替えもしてみました。

WordPresプラグインを最新PHPに対応させたかった

以前、以下の二つの記事で説明した方法でWordPressの環境構築をし、PHP7.3.33をインストールしています。

M2 MacでWordPressの開発環境構築手順!MAMPは使うな!M2のMacBook AirにてWordPressの開発環境を構築したので手順をご紹介します。MAMPを使わずにHomebrew、PHP...
phpbrewでphp7.3.33のインストール時のエラーと解決策phpbrewで現時点で少し古めのphp7.3.33をインストールした際に、たくさんのエラーが出てそれを乗り越えたのでお伝えします。一つ...

この状況で、開発しているWordPressプラグインを最新版PHPに対応させるために8.2.8をインストールすることにしました。

どのバージョンが最新か調べる

8.2系は8.2.6が最新と表示されました。

ただ、どうやらこれは以前に取得した情報を表示しているだけなので、更新する必要があリます。

updateとすると、phpbrewのプログラム自体が最新化されるのかな、って思いますが、そうではなくてPHPのバージョンのrelease情報を更新してくれるということです。

すると、8.2.8が最新ということがわかりました。

意外とすぐにインストールできた

結論から言うと、以下でインストールできました。

opensslの指定

ただ、一つぶつかった点があります。

最初、 +openssl=/opt/homebrew/opt/openssl@1.1 という部分をつけていませんでした。実行すると、以下のようなエラーが出ました。

最後の行にログの所在が書かれてるので、これを開いてみると、最後の方に以下が出力されていました。

この状態でも、不思議なのは以下のようにPHPbrewによるとインストールされたことになってるんですよね。

まぁ、でもちゃんとエラーがなくならないときちんと動くか心配なので対応を調査しました。先ほどのエラーの出力の最後にログの場所が記載されていたので、それを開くと下の方に以下の出力がありました。

調べていくと、以下の記事に似た出力が記載されていました。

PHP compile fails with undefined symbols for architecture x86_64, libiconv on macOS Sierra

この記事はlibionvというソフトウェアの指定に関するエラーですが、私のはそれに相当するのがopensslというソフトウェアです。

これはPHP7.3.33をインストールした時にもしたのですが、opensslのパスを指定するのを思い付きました。

で、opensslはいくつかバージョンがあるのでどのバージョンが対応しているのが調べました。以下によると7.3.33と同じく、1.1に対応していることがわかりました。

Requirements

+openssl=/opt/homebrew/opt/openssl@1.1 をつけてうまく上記のエラーは出なくなり、正常にインストールできました。ちなみに、インストール失敗した後に、アンインストールせずに、重ねてインストールしました。それでも正常にインストールできました。

apxsの指定の仕方

なお、 +apxs2="$(which apxs)" という部分、7.3.33の時は、 +apxs2=/opt/homebrew/bin/apxs とパスを指定していましが、今回のようにして短くすることができました。

+debugは要らない

7.3.33の時はXdebugを使うには +debug というオプションをつけなければならないと何となく思っていましたが、今回はこれをつけずにやってみました。その結果このオプションをつけなくても、Xdebugをインストールしたら普通に使えることがわかりました。

ちなみに、このオプションをつけるかどうかで何が違うのかいまいちわからないのですが、以下のように、拡張機能が配置されるディレクトリの名前が違うことはわかりました。

/Users/xxxxx/.phpbrew/php/php-8.2.8/lib/php/extensions/no-debug-non-zts-20220829

/Users/xxxxx/.phpbrew/php/php-7.3.33/lib/php/extensions/debug-non-zts-20180731

no-debug-non-zts-20220829とdebug-non-zts-20180731の違いです。

これ以外に実質的な違いがあるのかたくさん調べたのですが、ほとんど情報が出てきません。以下のページによると、mysqlnd.debugという機能はこのオプションが無いと使えないとあります。

Runtime Configuration

Apacheでのバージョンの切り替え方法

コマンドラインで使うPHPのバージョンの切り替えは、PHPbrewを使えばワンコマンドで簡単にできます。

心配していたのはApacheでのバージョンの切り替えです。WordPressで動かすにはApacheから使われるPHPのバージョンを切り替える必要があります。

先ほどPHPがインストール完了した段階で、httpd.confに一行追記されます。フルパスで言うと

/opt/homebrew/etc/httpd/httpd.conf

です。以下は抜粋ですが、ここでいうところの2行目が自動的に追記されます。

これだと、どちらのバージョンが使われるかわからないので、8.2.8を使いたい場合は、上で言うところの1行目をコメントアウトします。つまり、行頭に # を付与します。

これでApacheを再起動すれば、8.2.8が有効になります。

なお、言うまでもないですが、インストールした段階で /opt/homebrew/lib/httpd/modules/ に libphp8.2.8.so が自動的に配置されています。

今後、都度バージョンを切り替えるには、このhttpd.confで使わないバージョンの行にコメントアウトを付け替えて、Apache再起動でできるということです。

Xdebugをインストールして使う

やり方は以下の7.3.33でやった方法と同じです。

MacのPHPbrewでのXdebugの設定法とVScodeでの使い方MacでPHPbrewでPHPの環境を構築していますが、Xdebugを導入しVScodeでの開発の効率を上げることにしました。設定方法を...

ただ、今回は最新版PHPだけあって、Xdebugのバージョンを指定する必要はありませんでした。

設定のiniファイルは7.3.33の時に作成したものをそのままコピーしてくることでOKでした。

これでApache再起動すれば8.2.8でXdebugを使えます。

さいごに

インストール時に少しエラーは出ましたが、7.3.33で体験したことが活きてすぐに解決できました。切り替え方法も簡単なので、たくさんのバージョンをインストールしておき、それぞれ検証するのも簡単そうです。