絶賛MAMP PROユーザーです。(たった59USDで劇的に便利になるのに意外と周りの人が使ってない……)
で、最近のPHPでの開発となると、コマンドラインでPHPを叩いてテンプレートを作成する!みたいな便利機能が多いです。
で、絶賛MAMP PROユーザーなので(しつこいw)、OSXのコマンドラインから叩くPHPと、実際にブラウザ経由で走るPHPのバージョンが違ったり、DBに接続する方法が違ったりと面倒なことに直面します。
今までは、
$ /Applications/MAMP/bin/php/php5.5.26/bin/php app/console doctrine:generate:entity
みたいに長々とMAMPのPHPのフルパスを打ってた(なぜ!?)んだけど、いい加減ちゃんとやれよ!と怒られそう(誰に?)なので簡便化してみました、というご報告。
まず、Googleさんに聞いてみたら、それらしい記事をご紹介いただいたので、そのままやってみたら、Operation not permitted
って怒られる。
なんで?とよくよく見てみたら、その記事の冒頭にちゃんと「怒られた方はこちら」ってちゃんと書いてた。
ようするにEl Capitanの場合、Rootlessというセキュリティ機能が追加されて、/usr/bin
への変更ができないんだそうです。
先の記事だと「その機能を無効にしちゃおうぜ!」って方法なんだけど、さすがにそれはヤダ。
というわけで、自分のユーザーディレクトリに各MAMP PHPのバージョンのシンボリックを配置しちゃおうぜ!ってのが本題です。
(前振りが長くて申し訳ありませんでした)
まずはホームディレクトリにphpというフォルダ作成。
$ mkdir ~/php
次にパスを通します。.bash_profileに次の1行を追加。
export PATH=$PATH:/Users/ユーザー名/php
で、その設定を有効化。
$ source ~/.bash_profile
作ってパスを通したディレクトリに、MAMP PHPの各バージョンのシンボリックリンクを作成。
$ ln -s /Applications/MAMP/bin/php/php5.1.6/bin/php /Users/ユーザー名/php/php5.1 $ ln -s /Applications/MAMP/bin/php/php5.2.17/bin/php /Users/ユーザー名/php/php5.2 $ ln -s /Applications/MAMP/bin/php/php5.3.29/bin/php /Users/ユーザー名/php/php5.3 $ ln -s /Applications/MAMP/bin/php/php5.4.42/bin/php /Users/ユーザー名/php/php5.4 $ ln -s /Applications/MAMP/bin/php/php5.5.26/bin/php /Users/ユーザー名/php/php5.5 $ ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /Users/ユーザー名/php/php5.6 $ ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /Users/ユーザー名/php/php5 $ ln -s /Applications/MAMP/bin/php/php7.0.0/bin/php /Users/ユーザー名/php/php7
これで各バージョンのPHPがコマンドラインから使えるようになりました。
$ php5 -v PHP 5.6.10 (cli) (built: Jul 6 2015 14:28:54) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies $ php5.5 -v PHP 5.5.26 (cli) (built: Jul 6 2015 14:26:26) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies $ php7 -v PHP 7.0.0 (cli) (built: Dec 8 2015 16:39:19) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
みたいな感じ。