uzullaがブログ

uzullaがブログです。

やはり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が出来ますね、うれしいですね(真顔で)。

5.2

同様に5.2のphp-cgiもビルドできます*5、やりましたね(死んだ目で)。*6

*1:5.1.6…?ウッ頭が

*2:php-cgiさえできれば、拙作apachehere(https://github.com/uzulla/apachehere)で開発環境が用意しやすくなりましたね…うれしい…気がする…

*3:拙作、apachehereでつかいたいので

*4:っていうか、PHP_BUILD_CONFIGURE_OPTSで追加はできるけど、削除できないままなのはなぜなんだぜ

*5:php-build(phpenv)でビルドすると、多数のパッチがあたって無事にビルドできます

*6:5.2はmysqlndがないので、brewmysqlをいれておくとよいでしょう