Macでhomebrewを使用してPHPバージョンを上げる手順
このブログではアフィリエイト・アドセンス広告を利用しています
当ブログでは、アドセンス・アフィリエイト広告を掲載しています。
消費者庁が発表しているルールに沿って記事を作成していますが、問題のある表現を見つけた際にはご連絡ください。
MacのPHPバージョンを上げるだけという一見簡単な作業に苦戦してしまったので、同じように悩んでいるかもしれない誰かに向けて記録しておきます。もしかしたら、それは数ヶ月後の私かもしれませんし。
目次(読みたいところへジャンプ!)
インストールの管理はHomebrewで
PHPのバージョン管理はMac用のパッケージマネージャー「Homebrew」を使用しています。
Homebrewってなに?
パッケージマネージャーって何してくれるの?
という方は、こちらの記事が参考になるかもしれません。
>>新しいMacを購入したら必ずインストールするアプリと設定一覧
PHPだけのバージョン管理ツール「phpbrew」も使ってみたこともあります。ただ、フリーランスの小規模案件を受注している状態では、プロジェクトごとにPHPバージョンが厳格に定められていることもありません。なるべく最新の安定バージョンを選んでおけばいいだけなので、PHPのバージョン管理もHomebrewだけで済ませています。
PHP7からPHP8へバージョンアップする手順
Homebrewを使ってPHPをインストールしているなら、次のコマンドだけでうまくいくこともあると思います。設定をいじってたりしなければ。
>brew install [email protected]
>brew unlink [email protected]
>brew link [email protected]
私の場合は、これだけではphp8.0はインストールされたものの、バージョンが7.4から切り替わらないという現象に陥ってしまいました。
そこで、使用することもない7.4も含めてPHPのインストールをリセットすることにしてみたのです。
// インストール済のPHPを探す
>brew search php
// 7.4を削除する
> brew uninstall [email protected]
// homebrewの設定ファイルも削除(危険なので自己責任で)
rm -rf /opt/homebrew/etc/php
これで、インストールされているPHPがなく設定ファイルもない、まっさらな状態になりました。ここから、インストールしたかったPHPをインストールしていきます。
> brew install [email protected]
> brew install [email protected]
// php8.1を使用するよう命令
> brew link --force [email protected]
// php8.1インストール後に出力されていたメッセージに従ってPATHを追加する
> echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
> echo 'export PATH="/opt/homebrew/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc
// PATH設定を反映させる
> source ~/.zshrc
結果的には、brew linkだけではダメでインストール後に出力されたコマンドでパスを通した後に、phpのバージョンが切り替わりました。
無事に最新バージョンのPHPがインストールされましたが、デバッグできるようになるまで躓き続ける初心者なのでした(涙
Visual Studio CodeでPHPがデバッグできるように設定した内容
まだ現状ではPHP8.1がインストールされただけで、デバッグ環境は整えられていません。試しに、PHPのバージョンを確認するコマンドphp -v
と打った結果がこちら。Xdebugがインストールされていません。
xDebugをインストールするにはpeclを使用します。
// peclがあるか探す。php8と一緒にインストールされているはず
> which pecl
// peclでxdebugをインストール
>pecl install xdebug
無事にPHP8.1にxdebug3.2がインストールされました。
VS Codeでデバッグするためには、VS Code側の設定が必要です。
- 拡張機能「PHP Debug」のインストール
- php.iniにxdebugの設定を記述
- プロジェクトごとにlaunch.jsonファイルを作成
- グローバル設定ファイルsetting.jsonの確認
拡張機能「PHP Debug」のインストール
左の拡張機能メニューから「php debug」を検索してインストールします。
php.iniにxdebugの設定を記述
php.iniファイルにxdebugで必要な設定を記述します。
[xdebug]
; Xdebugの機能の内、ステップデバッグを有効化
xdebug.mode=debug
; PHPの実行時にデバッグを自動的に開始する
xdebug.start_with_request=yes
; 接続先ホスト
xdebug.client_host=localhost
; 接続先ポート
xdebug.client_port=9003
php.iniファイルがどこにあるかわからない時には、次のコマンドで探せます。
> php -i | grep ini
launch.jsonファイルを作成
VS Code左メニュー内のデバッグアイコン(三角の再生マークに虫)をクリックし、テキストリンク「launch.jsonファイルを作成します」をクリック。
プルダウンで「PHP」を選択。
launch.jsonファイルが作成されます。基本的にはそのまま使用でOK。ポート番号など必要な箇所だけ変更していきます。
launch.jsonファイルとは、VSCodeでデバッグ実行するための設定ファイルです。プロジェクトフォルダ内の.vscodeフォルダ内に作成されています。
グローバル設定ファイルsetting.jsonの確認
ここまでのVS Codeの設定でステップ実行や変数の中身確認などができるようになるはずです。
でも、私の環境では動かず、デバッグコンソールエラーが吐き出されてしまうのです。
原因はsettting.jsonファイル内に追記していたphp.debug.executablePathが[email protected]のまま変更されていなかったからでした。
この部分をwhich php
で確認したphp8.1のパスに書き換えるとデバッグコンソールエラーが出力されなくなりました。
"php.debug.executablePath": "/opt/homebrew/opt/[email protected]/bin/php",
ついでに、setting.jsonファイルにlauch情報を追記しておくと、プロジェクト毎にlaunch.jsonファイルを作成しなくてもxdebugの設定がグローバルに反映されます。
"launch": {
"version": "0.2.0",
"configurations": [{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}]
}
さまざまな環境でデバッグするためにはまだ作業が必要
ここまでの作業でシンプルなphpファイルならデバッグできる状態になりました。
ただし、LocalやDockerで実行しているWordPressをデバッグすることはまだできていません(泣。長い道のりですね・・・
解決方法が見つかったら追記していきます。
サイト制作時に使用するPHPバージョンの決め方
フリーランスでお仕事受注時のPHPバージョン選択は、クライアントが契約しているレンタルサーバーの環境で決めることが多いです。
今なら大手レンタルサーバーのほとんどはPHP8.0以上に対応しているのでPHP8.0にしています。このブログだけ実験も兼ねてPHP8.1にしています。
そもそも、PHP7.4のセキュリティサポートの終了日は2022/11/28で終了しちゃってますから、未だにPHP7系しか使用できないレンタルサーバーは早く引っ越しを考えた方がいいってアドバイスしちゃいます。
「何年も放置していたWordPressサイトがおかしくなったのでなんとかしてほしい」という依頼が来ますが、PHPのバージョン5のままだったりするとホラーですよね。おそロシア。
特に使用しているテーマが自作だった場合、バージョン上げると動かなくなってしまうことの方が多かいです。PHP8からは恐ろしくて、サーバーの環境やテーマの中身やプラグインをチェックした後じゃないと見積できません。もっと怖い話をすると、そんな丸投げ依頼を数万円で気軽に請け負ったけどどうすればいいかわからないから助けてという相談もあるんですよ…テーマが吐き出すエラー1つ1つ潰したり、更新がとまってしまったプラグイン変わりを探したり、とても数万円でできる業務ボリュームじゃないのに。
長年愛用しているエックスサーバーは、すでにPHP8.1も利用できます。
WordPressはPHPで動いているので、ちゃんと最新バージョンが速やかに対応してくれるレンタルサーバーを選びましょう。下の紹介リンクから契約すると、初回代金が最大1万円割引になってお得ですよ。
>>エックスサーバー