Posted at

手っ取り早くMacで複数バージョンのPHPをインストールしてphpenvで切り替えて使う

More than 1 year has passed since last update.


やりたいこと



  • phpenv って便利

  • でも持ってないバージョンのPHPが欲しい時、 phpenv install でいちいちPHPのビルド走らせるのは時間かかるし、依存ライブラリのインストールだとかがとにかく面倒

  • ビルド済みのPHPが欲しい

  • でもって当然 phpenv でバージョン切り替えながらコマンドラインから使いたい


環境


なぜ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以下にディレクトリ置けば、それでも使えると思います。

ライセンス的にどうなのか知らないので試してませんが。