PHPのバージョン管理:miseとphpenvの使い方

スポンサーリンク

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管理することでチームのバージョンを統一できる