macでphpのバージョンを切り替える
php7が入っているmacでphp5.6の環境を必要になったので、phpenvでphpのバージョンを切り替えられるようにしました。
phpenv
GitHub - CHH/phpenv: Thin Wrapper around rbenv for PHP version managment
「phpenv」でググると他にもphpenvと名がつくリポジトリがヒットしますが、こちらを使用した方がよいです。他のphpenvは開発も止まっており、使おうとしてもエラーが発生して使えません(体験談)
% git clone https://github.com/CHH/phpenv.git % phpenv/bin/phpenv-install.sh
インストールが完了すると、.bashrcに記述すべき設定を出力してくれるので、そのまま記載しましょう。わたしは、環境設定のもの+zshを使っている、ということから.zprofileに設定を追加しました。
export PATH="$HOME/.phpenv/bin:$PATH" eval "$(phpenv init -)"
source ~/.zprofile
で設定を読み込み、phpenv --version
でphpenvのバージョンが確認できればインストール完了です。
php-build
GitHub - php-build/php-build: Builds PHP so that multiple versions can be used side by side.
PHPの環境を構築するツール。これとphpenvを組み合わせてphpのバージョンを切り替えられるようになります。
% git clone https://github.com/php-build/php-build.git $HOME/.phpenv/plugins/php-build
インストールはこれだけ。
phpのバージョンを切り替える
phpenv install --list
で利用可能なバージョンがいっぱい表示されるので、必要なものを選んでphpenv install バージョン番号
でインストールをします。
インストールには結構時間がかかるので、のんびり待ちます。
わたしはphp5.6系をインストールしたのですが、途中でパッケージが無いとエラーが出たのでそのパッケージのインストールを行いました。
% phpenv install 5.6.17 configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: 3.0). configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. configure: error: mcrypt.h not found. Please reinstall libmcrypt. % brew reinstall libmcrypt
指定したバージョンのphpのインスールが完了したらあとは切り替えるだけ。
% phpenv global 5.6.17 % phpenv versions system * 5.6.17 (set by /Users/username/.phpenv/version)
php --version
でも切り替わっていることが確認できます。わたしの場合、切り替え前のphpのバージョンが出力され、なんでーって悩んでたのですがターミナルを再起動したらちゃんと新しいバージョンが表示されました。
ちなみに、ディレクトリごとにphpのバージョンを切り替えることもできるらしい。phpenv local バージョン番号
ってやると、カレントディレクトリのみで使えるようになるんだって。プロジェクトごとに違うphpのバージョンを指定して使えるということですね、すごい。
感想
phpのバージョンを下げないと動かないってどうすれば・・・ダウングレードする?Dockerで環境作る?と色々頭がよぎりしましたが、とても簡単に切り替える環境を作ることができました。