PHP
phpbrew

MacでPHPバージョン切り替えをできるようにする

いまだにPHP5.6系のシステム保守等があるのでPHPはバージョン切り替えが容易にできるようにするためphpbrewを使う。

[環境]
MacOS High Sierra

事前準備

  • Homebrewをインストールしておく

phpbrewのインストール

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew 
sudo mv phpbrew /usr/local/bin/

phpbrewのセットアップ

phpbrew init
echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc

PHPをビルドするための準備

phpbrew -d install --test [インストールしたいバージョン番号] +defaultコマンドを実行して足りないものをhomebrewでインストールする。

)この場合libxml2,mhash,mcrypt,pcre,readline,opensslが足りない。

$ phpbrew -d install --test 7.2.5 +default
===> phpbrew will now build 7.2.5
---> Parsing variants from command arguments '+default'
===> Loading and resolving variants...
Creating directory /Users/ikezawa/.phpbrew/variants
homebrew prefix '/usr/local/Cellar/libxml2/2.9.7' doesn't exist. you forgot to install?
homebrew prefix '/usr/local/Cellar/mhash/0.9.9.9' doesn't exist. you forgot to install?
homebrew prefix '/usr/local/Cellar/mcrypt/2.6.8' doesn't exist. you forgot to install?
Homebrew prefix "/usr/local/Cellar/pcre/8.42" doesn't exist
homebrew prefix '/usr/local/Cellar/readline/7.0.3_1' doesn't exist. you forgot to install?
prefix /usr/local/Cellar/openssl/1.0.2o_1 doesn't exist.Compiling with openssl=shared, please install libssl-dev or openssl header files if you needDownloading http://www.php.net/get/php-7.2.5.tar.bz2/from/this/mirror via curl extension

インストール中にexportするように表示されたものはコピペして.bash_profileに追記しておく。

==> Installing libxml2 dependency: sqlite
==> Downloading https://homebrew.bintray.com/bottles/sqlite-3.23.1.high_sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring sqlite-3.23.1.high_sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because macOS provides an older sqlite3.

If you need to have this software first in your PATH run:
  echo 'export PATH="/usr/local/opt/sqlite/bin:$PATH"' >> ~/.bash_profile

↑ これが出たらコピペして実行

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/sqlite/lib
    CPPFLAGS: -I/usr/local/opt/sqlite/include

PHPのビルド

警告が出なくなったら以下のコマンドを実行して、PHPをビルド。

phpbrew install [インストールしたいバージョン番号] +default

ビルドできたらphpbrew listコマンドで指定したバージョン番号が表示されることを確認。

 phpbrew list
* (system)
  php-7.2.5      

一時的に切り替える場合はphpbrew use [バージョン番号]を、システムデフォルトとして使いたい場合はphpbrew switch [バージョン番号]を実行。

$ php -v
PHP 7.1.14 (cli) (built: Feb  7 2018 18:33:30) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
$ phpbrew switch 7.2.5
$ php -v
PHP 7.2.5 (cli) (built: May  8 2018 22:25:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

phpbrewの使用をやめてシステムデフォルトのPHPに戻したい場合は、phpbrew offコマンドを実行する。

$ php -v
PHP 7.2.5 (cli) (built: May  8 2018 22:25:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
$ phpbrew off
$ php -v
PHP 7.1.14 (cli) (built: Feb  7 2018 18:33:30) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

phpbrewの詳しいオプション等はGithubのREADMEに詳しく書いてるし、日本語で訳してくれているPHPBrew JA 日語指引なんかを参考に見ておくとよい。