HomebrewでMacにphpenv+php-buildをインストールしてPHPのバージョンを管理する

Apache、MySQLに引き続き、Homebrewでphpenvをインストール…

Apache、MySQLに引き続き、HomebrewでphpenvをインストールしてMacに開発環境を構築していきます。
普通にPHPをインストールしてもいいんですが、案件によってPHPのバージョンは変わりますし、その度にPHPをインストールし直すのは面倒なので、phpenvをインストールすることにしました。
Homebrewについては下記を参照してください。
MacにHomebrewをインストールしてパッケージを管理をする

phpenvをインストール

いつものbrew installコマンドでインストールします。

$ brew install phpenv

インストールしたらパスを通します。
今回は.bash_profileに追記しました。

$ vi ~/.bash_profile
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export PATH=$PATH:$HOME/.phpenv/bin # 追記
eval "$(phpenv init -)" # 追記

パスを通したらターミナルを再起動するか、sourceコマンドで反映します。

$ source ~/.bash_profile

パスが通っているか確認します。

$ echo $PATH
/Users/username/.phpenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/.phpenv/bin

/Users/username/.phpenv/shimsと/Users/username/.phpenv/binが上記のようになっていればOKです。
※usernameは読み替えてください。

php-buildのインストール

php-buildはHomebrewでインストールするのではなく、gitからクローンしてphpenvのプラグインとしてインストールします。
phpenvのプラグインとしてインストールすることでphpenv installコマンドが使用できるようになります。

$ git clone git://github.com/CHH/php-build.git $HOME/.phpenv/plugins/php-build

php-buildをインストールしたら、PHPをインストールするときにApacheのモジュールも生成するようにdefault_configure_options変更します。

$ vim ~/.phpenv/plugins/php-build/share/php-build/default_configure_options
--with-apxs2=/usr/local/bin/apxs # 最終行に追記

apxsのパスはwhichコマンドで確認してください。

$ which apxs
/usr/local/bin/apxs

PHPをインストール

PHPをインストールする前に先に関連パッケージをインストールしておきます。

$ brew instal re2c
$ brew install libjpeg
$ brew install libpng
$ brew reinstall libmcrypt

関連パッケージをインストールしたら、phpenvコマンドでバージョンを確認し、インストールしたいバージョンのPHPをインストールします。

# バージョン一覧
$ phpenv install -l
# バージョンを指定してインストール
$ phpenv install 5.5.9
# インストールしているバージョンを確認
$ phpenv versions
* system (set by /Users/username/.phpenv/version)
5.5.9
# グローバルで使用するPHPのバージョンを指定
$ phpenv global 5.5.9
$ phpenv rehash
$ php -v
PHP 5.5.9 (cli) (built: Jun 29 2015 21:19:53)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

PHPのインストールには結構時間がかかったので、気長に待ってください。

phpenv-apache-versionのインストール

PHPをインストールしたら、ApacheのPHPモジュールの切り替えをしてくれるスクリプトをインストールします。

$ git clone https://github.com/garamon/phpenv-apache-version ~/.phpenv/plugins/phpenv-apache-version

phpenv-apache-versionは ~/.phpenv/versions/{version}直下にあるlibphp5.soをコピーしてApacheモジュールとして読み込ませます。 その為、PHPのインストールの際に生成されたlibphp5.soを上記のパスに移動しておく必要があります。 phpenvで各バージョンのPHPインストールした際には、下記のようにApacheのPHPモジュールを移動させます。

$ mv /usr/local/Cellar/httpd24/2.4.12/libexec/libphp5.so ~/.phpenv/versions/5.5.9/

移動されたら、下記のコマンドを実行するとlibphp5.soがコピーされ、Apacheが再起動されるはずなんですが、現状のままではエラーになってしまいます。

$ phpenv apache-version 5.5.9
Error: No available formula for httpd
Sorry your OS is not supported.

これは、httpdというformulaがないからエラーになっています。現在Apacheのformulaはhttpd22かhttpd24の為です。
直接スクリプトを修正して対応します。

$ cd ~/.phpenv/plugins/phpenv-apache-version/bin/
$ cp -p rbenv-apache-version rbenv-apache-version.org
$ vim rbenv-apache-version
if [ -d "$(brew --prefix httpd24)" ]; then
    PHPENV_APACHE_MODULE_PATH="$(brew --prefix httpd24)/libexec"
elif [ -d "$(brew --prefix httpd22)" ]; then
    PHPENV_APACHE_MODULE_PATH="$(brew --prefix httpd22)/libexec"
fi

再度コマンドを実行すると、エラーにならずに終了するはずです。

$ phpenv apache-version 5.5.9
copy /Users/shoei/.phpenv/versions/5.5.9/libphp5.so to /usr/local/opt/httpd24/libexec
Restarting apache...
Password: # パスワードを入力

Apachでphpinfoを確認する

ドキュメントルートにファイルを作成してブラウザからphpinfoを確認してみます。

$ vim /usr/local/var/www/htdocs/info.php
<?php phpinfo(); ?>

ブラウザでhttp://localhost/info.phpにアクセスしてphpinfoを見ると、バージョンが5.5.9であることを確認できます。

他のバージョンのPHPをインストール

他のバージョンのPHPをインストールしてみます。

$ phpenv install 5.6.9
$ phpenv versions
system
* 5.5.9 (set by /Users/shoei/.phpenv/version)
5.6.9
$ phpenv global 5.6.9
$ phpenv rehash
$ php -v
PHP 5.6.9 (cli) (built: Jun 30 2015 22:00:14)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

忘れずにlibphp5.soを移動しておきます。

$ mv /usr/local/Cellar/httpd24/2.4.12/libexec/libphp5.so ~/.phpenv/versions/5.6.9/
$ phpenv apache-version 5.6.9
copy /Users/shoei/.phpenv/versions/5.6.9/libphp5.so to /usr/local/opt/httpd24/libexec
Restarting apache...
Password: # パスワードを入力

phpinfoで確認してもバージョンが変わっているのが確認できます。

PHPのアンインストール

特定のバージョンのPHPをアンインストールする場合は、~/.phpenv/versions/{version}ディレクトリを削除します。

$ rm -rf ~/.phpenv/versions/5.5.9
$ phpenv rehash

あとがき

これでApache、MySQL、PHPのインストールが終わったので、PHPの開発環境は構築環境です。あとはphpmyadminいれようか悩んでます。
最近プライベートではPHPはほとんど触らずに、Java、あとはRaspberry Piで遊んでいるので、その辺も少しずつ載せていきたいです。

sh0e1
Web Engineer / Go / PHP / JavaScript / GCP Professional Cloud Architect