もじばけおなう

個人的なメモ

phpenv と php-build で複数の PHP を Mac のローカルで管理する

おはようございます。もじばけおでございます。
先日カッとなって MacBook Pro の Retina モデルを購入してしまいました。
カッとなった理由については深く突っ込まないでください(真顔)

というわけで、複数の PHP をビルドして管理するわけなんです。
インターネッツ社会な昨今、ググればすぐに情報出てくるわけなんですが、
既存の素敵な記事を読んでも詰んでしまうわたくし向けにまとめをば。

事前準備

Homebrew 必須ですよ、アザゼルさん

  • Xcode 入れてから以下で
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
brew doctor
brew update

アパッチ先生召喚

  • nginx もいいけどとりあえず Apache をね!
  • libphp5.so の作成に apxs 使うのでこのタイミングで httpd いれちゃうよ!
brew install httpd

phpenv

インストール

  • brew でかんたん!
brew tap josegonzalez/homebrew-php
brew install --HEAD phpenv

せってい

export PATH=$PATH:$HOME/.phpenv/bin
eval "$(phpenv init -)"
  • zsh なひとは .zshrc だね!

php-build

インストール

  • brew install はしない
  • phpenv の plugin として追加しましょ
git clone https://github.com/CHH/php-build/ ~/.phpenv/plugins/php-build
cp ~/.phpenv/plugins/php-build/bin/phpenv-install ~/.phpenv/plugins/php-build/bin/rbenv-install
sed -i -e "s/# Provide phpenv completions/# Provide rbenv completions/g" ~/.phpenv/plugins/php-build/bin/rbenv-install

せってい

  • ビルドオプション設定しましょ

vi .phpenv/plugins/php-build/share/php-build/default_configure_options

--with-pear #without になってるので with にする
--with-apxs2=/usr/local/sbin/apxs #これ追加

phpenv install

  • とりあえずここでは 5.5.0RC3 あたりをいれてみましょうか
phpenv install 5.5.0RC3
  • Preparing の段階で、やれ re2c がないだの mcrypt がないだの言われるので、都度 brew install hoge しましょ
  • こんなのでるかも(でないかも)
-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
  "_sk_shift", referenced from:
      _load_all_certs_from_file in openssl.o
  "_sk_value", referenced from:
      _zif_openssl_csr_new in openssl.o
      _zif_openssl_pkcs7_verify in openssl.o
      _php_openssl_parse_config in openssl.o
      _php_openssl_sockop_set_option in xp_ssl.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libs/libphp5.bundle] Error 1
-----------------------------------------
  • 以下で解決するんじゃなかろうか
brew install openssl
brew link openssl --force
exec $SHELL -l
  • 作成された libphp5.so を cp
# httpd が2.2.23前提なので適宜読み替えてくだしあ
sudo cp /usr/local/Cellar/httpd/2.2.23/libexec/libphp5.so ~/.phpenv/versions/5.5.0RC3/
  • phpenv を更新
phpenv rehash
  • これで追加したものが表示されればおk
phpenv versions

phpenv-apache-version 導入

  • phpenv で切り替えるたびにごにょるのが面倒なので導入します
git clone https://github.com/garamon/phpenv-apache-version ~/.phpenv/plugins/phpenv-apache-version

ためしに切り替えてみる

  • とりあえずデフォルトの version 確認
bko@:~$ php -v
PHP 5.3.15 with Suhosin-Patch (cli) (built: Dec  9 2012 19:32:02)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
  • 切り替えてみる
phpenv global 5.5.0RC3
  • どや
bko@:~$ php -v
PHP 5.5.0RC3 (cli) (built: Jun 26 2013 01:58:06)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.3.0dev, Copyright (c) 2002-2013, by Derick Rethans
bko@:~$ phpenv apache-version 5.5.0RC3
copy /Users/bko/.phpenv/versions/5.5.0RC3/libphp5.so to /usr/local/opt/httpd/libexec
Restarting apache...
Password:


以上!!