やはりPHP 5.3、5.2をphpenvでビルドしなければならない
数日前にはPHP7.0.3もリリースされ、もうPHPは7系、5.6系だけでよいじゃないかと思いたい昨今ですが、私においては食っていくのにやはり5.3系を使わざるをえないことが多々有ります。 金にこまれば5.2もやるしかない。*1
とはいえ、すこしでも楽したいし、快適にphpstormもつかいたいし、vmはディスクスペースの無駄が多い。
ということで、OSXのphpenv(php-build)でPHP 5.3.29のphp-cgi
をビルドするメモです。*2
オチ
PHP_BUILD_CONFIGURE_OPTS='--with-openssl=/usr/local/Cellar/openssl/1.0.1i --with-libxml-dir=/usr/local/Cellar/libxml2/2.9.2/bin/xml2-config --disable-fpm ' phpenv install 5.3.29
opensslとlibxmlはbrewで入れているものを指定しています。
ちょっとだけ解説
--disable-fpm
の指定はphp-cgi
がビルドされてほしいからなのですが*3、
デフォルトだとdefault_configure_options
に記載された--enable-fpm
のconfigureオプションがついてしまい、5.3系ではphp-cgiができません。
(「5.3は」fpmと同時につくれないっぽい)
なので、disable-fpmしたいわけですが、正しい手法としては~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.29
に
configure_option -D --enable-fpm configure_option --disable-fpm
と書くべきです。
しかし、definitionsを書き換えると将来のphp-buildのupdateがメンドウです(modifiedになってほしくない)。*4
保証されている挙動だとはおもっていませんが、--enable-fpm
と--disable-fpm
が二つかかれていると(あるいは後にかかれていると)--disable-fpm
が優先されるようですので、このように指定すれば1行で行けます。まあ、上手くいかなかったら素直にdefinitionを書き換えましょう。
(そういえば、phpenvのpluginとしていれたphp-buildってphpenv updateでアップデートされるんですね、最近までしらなかったんですけど)
これでdefinitionをよごさなくても5.3系のphp-cgiが出来ますね、うれしいですね(真顔で)。