日記

日々のことと、Python/Django/PHP/Laravel/nodejs などソフトウェア開発のことを書き綴ります

PHP 5.6 on Mac

色々はまったのでメモ。

phpenv + php-build で、PHP 5.6.10

phpenv + php-build は元々インストールしてあって、前に PHP 5.3 をビルドした環境だったから、問題無くいけるかなと思ったら、結構ハマった。

php-build の master の HEAD を取得すれば、以下が実行できる。

phpenv install 5.6.10

暫くアップデートしてない人は注意。 だがしかし、一見するとコンパイル出来たかのようで、出来ていなかったので対応策をログに残す。

bison 問題

普通に make が実行出来た気がしたけど、実行ログの先頭を見ると以下のような warning が出ていた。

configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: 3.0).
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: none, min: 204, excluded: 3.0).

そもそも configure が巧く出来ていない的な?

PHP 5.6 のビルドに必要な bison は >= 2.4 かつ < 3.0 という微妙なライン。 Mac は Marvericks だったので、 bison 2.3が入っていた。 Homebrew でインスコすりゃイイじゃん、と思ったら、bison 3.0.2 が入ってしまって解決出来なかった。

homebrew の versions を使って bison27 をインストールすることで解決できた。パスが通らないかもしれないので、その時は、以下のようにして symbolic link を作成する。

$ cd /usr/local/bin
$ ln -s ../Cellar/bison27/2.7.1/bin/bison ./bison
Apache module 作成されない問題

bison のバージョンが解決して、bison の warning も出ずビルドはうまくいったけど、 Apache Module が生成されない。

5.3.3 を使った時も、同じようなことでハマったことを思い出し、以下のファイルを編集して再実行する。ちなみに以下のファイルは、php-build の install.sh を実行しないと存在しないかも。

$ sudo /usr/local/share/php-build/definitions/5.6.10

このファイルに対して、以下の内容を追記

configure_option "--with-apxs2" "/usr/sbin/apxs"

そして

phpenv install 5.6.10

しかし作られない。ログにも apache module のログが出ていないようだ…。

ここでお昼に出て、戻ってあれこれやっていたら、末尾に追記じゃなくて先頭に追記が正しい模様でした…。

あー、もう ハマってた時間の2時間くらい返せよぅ…。

phpenv install 5.6.10
phpenv rehash
phpenv global 5.6.10

これで PHP のインストールは完了。 そして以下のようにして、Apache に module を読ませる。 (古いモジュールを消したくない人は、要バックアップ)

$ sudo cp ~/.phpenv/versions/5.6.10/libexec/apache/libphp5.so /usr/libexec/apache2/
$ sudo apachectl restart

できたー\(^o^)/