🐪

phpenvでPHPのバージョンを切り替える

3 min read

概要

プロジェクト毎に PHP のバージョンを切り替えることが多くなってきたので、phpenv を導入しました。
この記事では、phpenv で PHP のバージョンを切り替える手順を紹介いたします。
なお、ビルドした PHP のバージョンは以下の2バージョンです。

  • 7.4.20
  • 8.0.7

環境

MacOsで、Homebrew が導入されていることを前提としています。
(Linuxでもできると思います。)

また、zshを使っているので、パスを通す先がzshとなっています。
bashの場合は、適宜、読み替えてください。

今回の環境

  • OS : macOS Big Sur (ver 11.4)
  • Homebrew : 3.1.12

導入手順

phpenv の導入

PHP のバージョンをプロジェクト毎に切り替えられるようにするため、phpenv を導入します。
以下の導入手順は、基本的に公式の手順に則った手順となっています。

# phpenv をクローン
$ git clone git://github.com/phpenv/phpenv.git ~/.phpenv

# phpenv のパスを通す
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.zshrc

# phpenv で PHPバージョンを切り替えられるようにするために phpenv init をシェルに追加
$ echo 'eval "$(phpenv init -)"' >> ~/.zshrc

# .zshrc を再読み込み
$ source ~/.zshrc

phpenv コマンドのバージョン確認を実行し、バージョンが表示されればインストールは完了です。

# phpenvバージョンを確認
$ phpenv --version
phpenv v0.9.0-rc.1

phpbuild の導入

PHP をバージョンごとにビルドするため、phpbuild を導入します。
こちらも公式の手順で導入します。

# php-build をクローン
$ git clone git://github.com/php-build/php-build.git ~/.phpenv/plugins/php-build

PHP のビルドに必要なライブラリのインストール

PHPのビルドに必要なライブラリを Homebrew でインストールします。
※PHPのバージョンによっては不要なライブラリがあるかもしれませんが、一式いれておきます。

# パッケージ インストール
brew install bison re2c libxml2 zlib libzip bzip2 curl libiconv libedit pkg-config krb5 openssl@1.1 icu4c oniguruma

phpenv で PHP 8 をインストール

インストール可能なバージョンを表示

# インストール可能なバージョンを確認
$ phpenv install --list
Available versions:
  5.2.17
  5.3.10
  ・・・
  8.0.7
  8.0snapshot
  8.1snapshot

PHP 7.4 をビルドする

# PHP 7.4.20 をビルド
PHP_RPATHS="/usr/local/opt/bzip2/lib /usr/local/opt/libiconv/lib" \
PHP_BUILD_CONFIGURE_OPTS="--with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv" \
phpenv install 7.4.20

PHP 8.0 をビルドする

# PHP 8.0.7 をビルド
$ PHP_BUILD_CONFIGURE_OPTS="--with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv" \
phpenv install 8.0.7

phpenv で切り替え可能なバージョン一覧の表示

$ phpenv versions
* system (set by /Users/takorice/.phpenv/version)
  7.4.20
  7.4.8
  8.0.7

バージョン切り替え手順

Mac 全体の php のバージョンを指定する

Mac 全体の php のバージョンを指定する手順です。
ここでは、Mac にインストールされている PHP のバージョンに指定する手順を記載します。

# Macで設定されている PHP のバージョンを確認
$ php -v
PHP 7.4.14 (cli) (built: Jan  5 2021 14:30:27) ( NTS )

Mac にインストールされているバージョンに指定する場合は、 system を指定します。
phpenv でビルド済みのバージョンを使用する場合は、 system の代わりにバージョンを指定してください。

# プロジェクトの php のバージョンを システムで設定されているバージョンに指定
$ phpenv global system

# phpenv で設定されているバージョンを確認
$ phpenv version
system (set by /Users/takorice/.phpenv/version)

# php のバージョンを確認
$ php -v
PHP 7.4.14 (cli) (built: Jan  5 2021 14:30:27) ( NTS )

プロジェクト毎に php のバージョンを変更する

プロジェクト毎の PHP のバージョンを指定する手順です。
プロジェクトのディレクトリへ移動後、以下の手順で変更してください。
なお、手順実施後に .php-version ファイルが出来上がるので、.gitignore に入れておくと良いです。

# プロジェクトの php のバージョンを 8.0.7 に指定
$ phpenv local 8.0.7

# phpenv で設定されているバージョンを確認
$ phpenv version
8.0.7 (set by /Users/takorice/dev/hogehoge/.php-version)

# php のバージョンを確認
$ php -v
PHP 8.0.7 (cli) (built: Jun 16 2021 11:41:13) ( NTS )

参考文献

Discussion

ログインするとコメントできます