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のビルド - ぱせらんメモ