phpenvナシでも大丈夫。Brewとシェルスクリプトで快適なPHP切り替え環境を作る
はじめに
こんにちは、田中涼平(@RyoheiTanaka)です。
Laravel や他の PHP プロジェクトに取り組んでいると、PHP のバージョン切り替えに悩まされることがよくあります。phpenv
や asdf
といったバージョン管理ツールを使うのが定番ですが、Homebrew ユーザーならもっとシンプルに管理できたらいいのに……と思ったことはありませんか?
この記事では、Homebrew とシェルスクリプトだけで、簡単・柔軟に PHP バージョンを切り替える環境を作る方法を紹介します。
phpenv
を使わないのか?
なぜ- セットアップがやや煩雑(特に Mac 環境)
- Homebrew で PHP をすでに管理しているのに、さらに別の仕組みを使うのはやや冗長
-
.zshrc
や PATH まわりの設定競合が起きやすい - 私が使っているのは MacBook Pro A1502(2015 年モデル) のため、ビルド時のリソース制限が厳しく、
phpenv
経由のインストールで 多くのエラーが発生してしまいました
実は、brew install php@8.1
のようにして複数の PHP バージョンを入れておき、必要なバージョンを brew link
で切り替えるだけでも十分に実用的です。
changephp.sh
とは?
複数バージョンの PHP を brew
でインストールした上で、
シェルスクリプトを使って簡単に切り替えられるようにしたのが changephp.sh
です。
GitHub リポジトリはこちら:
👉 https://github.com/RyoheiTanaka/changephp
対応バージョン
- PHP 8.1
- PHP 8.2
- PHP 8.3
- PHP 8.4(※
php@8.4
ではなくphp
としてインストールされる)
セットアップ方法
# リポジトリをクローン
git clone https://github.com/RyoheiTanaka/changephp.git
# 実行権限を付与
chmod +x changephp/changephp.sh
# .zshrc にエイリアスを追加
alias changephp="~/Project/changephp/changephp.sh"
source ~/.zshrc
使い方
# PHP 8.2 に切り替える
changephp 8.2
# PHP 8.4(brew install php)に戻す
changephp 8.4
php -v
を実行すれば、現在有効なバージョンが確認できます。
はまったポイントと対処法
php -v
を切り替えても反映されない
これは、/usr/local/opt/php/bin
が $PATH
に先に登録されていることが原因です。
✅ 対処法:
# 不要なPATHを取り除く
export PATH=$(echo "$PATH" | tr ':' '\n' | grep -v "/usr/local/opt/php/bin" | grep -v "/usr/local/opt/php/sbin" | paste -sd ':' -)
また、.zshrc
の中に export PATH="/usr/local/opt/php/bin:$PATH"
といった記述がないかも確認しましょう。
php@8.4
が見つからない
Homebrew では php@8.4
というフォーミュラは存在せず、単に php
として提供されます。
スクリプト側で 8.4
の指定を自動的に php
に置き換えて処理しているため問題ありません。
おわりに
phpenv
ほど多機能ではないけれど、シンプルに Homebrew で PHP バージョンを切り替えたい人にとっては十分な選択肢だと思います。
同じように悩んでいる方の参考になれば嬉しいです!
GitHub でのスターや Issue、大歓迎です ✨
🚀 田中涼平の他の活動
- 🌐 ポートフォリオ: https://coolat.net
- 🧑💻 GitHub: https://github.com/RyoheiTanaka
- 🐦 X (Twitter): https://x.com/ryohei_dev
- 📝 Zenn: https://zenn.dev/ryohei_tanaka
Discussion