Lazuli

らずり

phpenv-apache-version プラグインについて

phpenv と php-build

rbenv というツールがあって、これは ruby のバージョンを管理出来るすぐれもの。このプロジェクトでは 2.0 でやりたいけどあれは 1.9 でやりたいとかそういうの場合にバージョンをすぐに切り替えられる。従来は一度端末にインストールやアップデートするとバージョン固定されてしまうけどそういう問題を解決することが出来る。
phpenv は rbenv をラップして作られたツールで、名前の通り php で rbenv のような機能を実現する。容易にバージョンを切り替えられるので大変便利。php-buildphp のインストールに使う。

$ brew install phpenv php-build
$ php-build 5.6.0 ~/.phpenv/versions/5.6.0
$ phpenv global 5.6.0
$ phpenv rehash
$ php -v
PHP 5.6.0....

このようにバージョンを切り替えられる。

phpenv-apache-version プラグイン

前述のように phpenv と php-build でバージョンの管理がしやすくなった。ところが brew で別途 php を入れたりなんやかんやしてるとシェルが指してる php は phpenv で、apche とか Web サーバ経由だと指してる php がプリインストールされてるほうの php になったりする。というかこの問題にぶち当たって、なんだ糞がとか言いながら格闘したのでそれの記録。apache 経由がプリインストールのだと、バーチャルホストで見てる phpPHPUnit とかテストで利用する php でバージョン差異が起きて激怒する事態となる。
あれやこれやどうにかならんかと Google 先生に教えを乞うと phpenv プラグインphpenv-apache-version というのを見つけてこれで解決した。apache が向いてる php を phpenv 側に向けてくれる。

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

これだけ。
簡単、シンプル。素晴らしい。

参考
phpenvによるApacheのphpモジュールを切り替え – phpenvで Apacheのphpモジュールを切り替えるプラグインつくった | Creator Life

httpd22 と httpd24

Homebrew で新しめのバージョン使ってると、

$ phpenv apache-version 5.6.0
Sorry your OS is not supported. httpd

ってなったりする。これは新しい Homebrew に httpd がなくなって、httpd22 と httpd24 にバージョンが分けられたことに起因する。 phpenv-apache-version が httpd しかサポートしていない。ここ の箇所。
プルリク来てるようだけど、マージされてないから開発者さんはもうメンテナンスする気がないのかもしれない。引っかかってる箇所が分かってるから自分で手を入れるなり、プルリクしてる人のを使うなりして動くようにすればいいと思う。

こんな感じで解決させた。