Vagrant使ってたから、OSXでPHP使う必要なかっただけだから..(震え声)

そういうわけでphpenvでPHP環境を作ってみました。まずは基礎知識。

  • phpenv
    Rubyのrbenv、Perlのplenvに相当。複数バージョンのPHPをHOMEにインストー
    ルし、切り替えて使うツール。というよりシステムを汚さないために使う感じ。

  • pecl, pear
    Rubyのgem、Perlのcpanmに相当。peclはCで書かれ、pearはPHPで書かれて
    いる。PHPはCで書かれたライブラリ(要は*.so)を動的にロードできないた
    め、このように分かれているそう。

  • composer
    Rubyのbundler、Perlのcartonに相当。アプリごとにライブラリを切り替え
    ることが出来る。

Homebrewのphpenvをインストール

普通にbrewコマンドでインストールします。
(実際はbrew bundle[2014-01-25-1] でインストールしてます。)

$ brew install phpenv
==> Downloading https://github.com/CHH/phpenv/archive/01a2c1e25096f8ff10f2f781428a5d470e1ecaba.tar.gz
Already downloaded: /Library/Caches/Homebrew/phpenv-01a2c1e.tar.gz
==> /usr/local/Cellar/phpenv/01a2c1e/bin/phpenv-install.sh
==> Caveats
To finish installing phpenv:
 * Add ~/.phpenv/bin to your $PATH
 * Add "eval $(phpenv init -)" at the end of your ~/.bashrc
 * Restart your shell
==> Summary
�  /usr/local/Cellar/phpenv/01a2c1e: 6 files, 24K, built in 7 seconds

上の説明のとおり、~/.zshenvに以下を追加。

export PATH=$PATH:$HOME/.phpenv/bin
eval “$(phpenv init -)”

ここで一点注意。phpenvはrbenvを自前で持っているため、元々のrbenvの
パス(brewでインストールしていれば/usr/local/bin)を優先させる必要が
あります。そのため、上では$PATHの最後に追加しています。うーん。

https://github.com/CHH/phpenv#important-notes

php-buildをインストール

rbenvやplenvと同じように[2014-01-25-1] 、pluginとしてインストールし
ます。

$ git clone [email protected] :CHH/php-build.git ~/.phpenv/plugins/php-build

cloneが終わるとインストール可能なバージョンを表示できます。

$ phpenv install -l

とりあえず最新の5.5.9をインストールしてみます。

$ CONFIGURE_OPTS="–with-pear" phpenv install 5.5.9
$ phpenv global 5.5.9 && phpenv rehash && rehash

CONFIGURE_OPTSに--with-pearを指定しているのは、pearがデフォルト無
効だからです。
~/.phpenv/plugins/php-build/share/php-build/default_configure_options

他のブログでは、default_configure_optionsの--without-pearを書き換
えているケースばかりでしたが、こうすれば書き換える必要はありません。

ruby-buildではRUBY_CONFIGURE_OPTSが使えたのに、php-buildでは
CONFIGURE_OPTSなのも注意です。PHP_CONFIGURE_OPTSは使えませんでした。

~/.phpenv/plugins/php-build/bin/php-buildによると
PHP_BUILD_CONFIGURE_OPTSも使えるようです(試してません)。

phpenvとphp-buildを作ったCHH氏はCONFIGURE_OPTSをどうぞと言っている
ので、今回はそれに従いました。

How to use CONFIGURE_OPTS in php-build - Asciinema

実際configureにどんなオプションが渡されたかは、
/var/tmp/php-build/source/5.5.9/config.niceを見ればよいと思います。

とにかくインストール出来ました。

$ php --version
PHP 5.5.9 (cli) (built: Feb  9 2014 02:22:41)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

peclで何かインストール

とりあえずimagickをインストールしました。予めimagemagickはbrewでイ
ンストールしてあります。

$ pecl install imagick
$ echo extension=imagick.so > ~/.phpenv/versions/5.5.9/etc/conf.d/imagick.ini

pecl helpでヘルプを見られます。list-allの結果少ないですね。Rubyと違っ
て適宜channelを追加するようです。面倒くさい。。

pearで何かインストール

しようと思いましたが、面倒になったので止めました。
composerは今度試します。

Thanks!
phpenv と php-build で複数の PHP を Mac のローカルで管理する - もじばけおなう
PHP拡張でPEARとPECLの2グループがあるのはなぜですか? Perlな.. - 人力検索はてな
Mountain LionでPHPのビルド - ぱせらんメモ