PHPのバージョン管理:miseとphpenvの使い方
はじめに
バージョン管理ツールを使えば、プロジェクトごとにPHPのバージョンを自動で切り替えられます。この記事ではよく使われる phpenv と、最近人気の mise の使い方を解説します。
バージョン確認コマンドは「PHPのバージョン確認方法まとめ」を参照してください。
mise(推奨)
miseはRust製のバージョン管理ツールで、PHP・Node.js・Python・Rubyなど複数言語を1つのツールで管理できます。
インストール
# macOS(Homebrew) brew install mise # シェルに設定を追加 echo 'eval "$(mise activate zsh)"' >> ~/.zshrc source ~/.zshrc
PHPをインストールする
# インストール可能なバージョンを確認 mise ls-remote php # 特定バージョンをインストール mise install php@8.3 # 最新バージョンをインストール mise install php@latest
バージョンを切り替える
# グローバル(デフォルト)に設定 mise use --global php@8.3 # プロジェクトごとに設定(.mise.tomlを作成) mise use php@8.2
プロジェクトディレクトリに .mise.toml が作成されます。
[tools] php = "8.2"
このファイルをgitで管理することで、チームで同じバージョンを使えます。
バージョンを確認する
php --version # PHP 8.3.12 ... mise list php # php 8.3.12 ~/dev/myproject/.mise.toml
phpenv
phpenvはPHP専用のバージョン管理ツールです。rbenv・pyenvと同じ仕組みで動作します。
インストール
# phpenvをインストール git clone https://github.com/phpenv/phpenv.git ~/.phpenv # シェルに設定を追加 echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(phpenv init -)"' >> ~/.zshrc source ~/.zshrc
PHPのビルドには php-build プラグインが必要です。
git clone https://github.com/php-build/php-build.git \ ~/.phpenv/plugins/php-build
macOSではビルド依存パッケージも必要です。
brew install bison re2c libxml2 libjpeg libpng \ libzip oniguruma openssl@3 pkg-config
PHPをインストールする
# インストール可能なバージョンを確認 phpenv install --list # 特定バージョンをインストール(ビルドに数分かかります) phpenv install 8.3.12
バージョンを切り替える
# グローバルに設定 phpenv global 8.3.12 # プロジェクトごとに設定(.php-versionを作成) phpenv local 8.2.24
phpenv local を実行するとプロジェクトディレクトリに .php-version ファイルが作成されます。
8.2.24
バージョンを確認する
php --version # PHP 8.2.24 ... phpenv versions # 8.2.24 # * 8.3.12 (set by /Users/username/.phpenv/version)
miseとphpenvの比較
| mise | phpenv | |
|---|---|---|
| 対応言語 | 多言語(PHP・Node.js・Python等) | PHP専用 |
| インストール方法 | バイナリをダウンロード | ソースからビルド |
| インストール速度 | 速い | 遅い(ビルドに数分) |
| 設定ファイル | .mise.toml |
.php-version |
| 他ツールとの共存 | しやすい | phpのみ |
PHPだけを管理するならphpenvでも十分ですが、Node.jsやPythonも合わせて管理するなら mise が手軽でおすすめです。
プロジェクトでの使い方
miseの場合
# プロジェクトディレクトリで cd myproject mise use php@8.2 # 以降、このディレクトリでは自動的にPHP 8.2が使われる php --version # PHP 8.2.24 ...
phpenvの場合
cd myproject phpenv local 8.2.24 php --version # PHP 8.2.24 ...
まとめ
| ツール | インストール | バージョン指定 | 確認 |
|---|---|---|---|
| mise | brew install mise |
mise use php@8.3 |
mise list php |
| phpenv | git clone + シェル設定 | phpenv local 8.3.12 |
phpenv versions |
- 新規プロジェクトや多言語環境なら mise がおすすめ
- PHP専用で使い慣れたrbenv系がいい場合は phpenv
- どちらも
.mise.toml/.php-versionをgit管理することでチームのバージョンを統一できる