やりたいこと
-
phpenv
って便利 - でも持ってないバージョンのPHPが欲しい時、
phpenv install
でいちいちPHPのビルド走らせるのは時間かかるし、依存ライブラリのインストールだとかがとにかく面倒 - ビルド済みのPHPが欲しい
- でもって当然
phpenv
でバージョン切り替えながらコマンドラインから使いたい
環境
- macOS 10.12.5
- phpenv v0.0.4-dev (anyenvでインストールした)
- MAMP 4.1.1
なぜMAMP
MAMPは、Mac用のApache Web Server、MySQL、PHPとそれらの制御用の小さなプログラムが付いたパッケージです。
なぜMAMPを使うかといえば、Mac用のビルド済みPHPバイナリを手に入れる方法で、おそらく一番手っ取り早いからです。
MAMP同梱のPHPならmysqlやsqliteのライブラリもリンク済みで機能も豊富。
同梱されていないバージョンでもダウンロードして所定のディレクトリに放り込むだけで良いので簡単。
Homebrewで大量にライブラリを落としてきてインストールに時間がかかる、ということもありません。
手順
MAMPをインストール
インストーラーに従って次へ連打で終わり。
使いたいバージョンのPHPバイナリを入手
MAMPのダウンロードページに、ある程度メジャーなバージョンのビルド済みPHPのコーナーがあります。
欲しいものをダウンロードして解凍し、 /Applications/MAMP/bin/php
に放り込みます。
phpenvの管理下で使えるようにする
MAMPのディレクトリに置かれているPHPを、phpenvでも扱えるようにします。
phpenvは versions
以下に置かれたディレクトリでPHPのバージョンを管理しているので、シンボリックシンクを張ってやれば普通に使えます。
# 例えばバージョン7.1.1をphpenvで操作できるようにしたいとき
ln -s /Applications/MAMP/bin/php/php7.1.1 $(phpenv root)/versions/7.1.1
いつも通り使う
phpenv versions
に先ほどのMAMPのPHPが出てくるようになるので、普通に使います。
$ phpenv versions
system
* 7.0.12 (set by /Users/kikuchy/.anyenv/envs/phpenv/version)
7.1.1
$ phpenv global 7.1.1
$ phpenv rehash
おまけ
MAMPみたいな大きなプログラムを入れるのは嫌! みたいな方は、MAMPから必要なdylibとかだけ取り出して、 install_name_tool とかでphpのリンクテーブル書き換えて、phpenvのversions以下にディレクトリ置けば、それでも使えると思います。
ライセンス的にどうなのか知らないので試してませんが。