年末だというのに所用でPHPをMacに簡単に入れる方法を沢山調べています。
個人的にはphpenv+php-buildつかってます。
本当に色んな方法が世の中にはあるのですが、今回のターゲットはphp5.5以降が入る方法だけです。cliで使いたいだけなので、方法によってはMysqlとの接続拡張があるとか無いとかあると思います。
テストはMavericksとLionの素の状態からやってます。
XAMPP for Mac
http://www.apachefriends.org/jp/xampp-macosx.html
定番ですが、現在だとPHP5.5.6が入ります。なんか他色々、いらない物もがさっと入ります。
ただ、完全に分離された領域にはいるので、既存環境は基本汚染されません。
俺はPHPだけしかいらないのですが、MysqlやApacheはあっても悪くないですね。
ただ、XAMPPのphpバイナリは”-a”オプションのIntaractive Shellが利用できないのが、個人的にはめっちゃ不便です、仕様変わって欲しい。
事前にXcodeインストールなどは不要です。
インストーラーをダウンロードしてインストールすると入ります(そうです、最近インストーラーになりました)。
インストール後、phpコマンドは以下にはいりますので、
/Applications/XAMPP/bin/php
.bash_profile等に以下を適当に追記しましょう。
# pathを通すなり
export PATH="/Applications/XAMPP/bin/:$PATH"
# aliasをつくるなり
alias php="/Applications/XAMPP/bin/php"
他のインストール方法にも言える事なのですが、phpへpathを通すか、Aliasを定義するかは迷う所です。
Pathを通すと、PHP以外の一部コマンドもそちらを優先参照するようになるので、「他の所で」影響があるかもしれません。
aliasだと、pearやPyrusとかPecl(pecl以外、もうめったにもうつかわないけど)を使う時にかならずフルパスで叩く必要があります。
どっちの方が既存に安全か(Mac標準でなくXAMPPの中にあるプログラムがうごいてしまって、問題がおこる)?というとaliasですが、変なハマりかたするのが嫌ならば、pathを通した方が良いですね。
いずれにせよ、.bash_profileの記述はいつでも変更できます。
アンインストールは、/Application/XAMPPを捨てて、追記を消すだけです。
php-osx.liip.ch が配布してるバイナリパッケージ
イマイチ使ったことがないので積極的にお勧めはしづらいですが、一番簡単でした。
Xcodeなども不要で、以下を実行するだけでインストールが完了します。
コードを見たかんじ、10.6のSnowleopardまではいけそうです(そこまでは検証してません)。
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5
ダウンロードすら不要な分、XAMPPよりも手間がありません。
何処に入るのかちょっとわかりづらいですが、Uninstallの項目をみるかぎり/usr/local/php5-*以下に入る模様です。そして/usr/local/php5にSymlinkが張られる模様。
PATHは通りませんので、~/.bash_profile等に /usr/local/php5/bin/php を XAMPPの章の最後を参考に適当にしましょう。
インストーラーのコードを確認したところ、`/usr/sbin/envvars`をいじって*1いるので、既存環境と相性があるかもしれません。
アンインストール方法がよくわからないのもこれをお勧めしづらい理由です。
すいません、普通にアンインストールの方法かいてありました。
コメントでの指摘大変有り難うございました> id:koriym さん
まず、Apacheのコンフィグに追記されるので、それを取り除きます
/etc/apache2/httpd.confに
LoadModule php5_module /usr/local/php5/libphp5.so
が「あれば消して」*2
LoadModule php5_module libexec/apache2/libphp5.so
を追記して、
あとは「/etc/apache2/other/」の「+php-osx.conf」と「+entropy-php.conf」 を消します。
(元ページには「also delete the file +php-osx.conf and +entropy-php.conf in /etc/apache2/other」とあるので上記書きましたが、インストーラーをバラしてpost-installスクリプトをみると、entropy-php.confは、php-osx.confのSymlink元っぽいのだが…?)
Apacheから削除ができれば、「/usr/local/php5-*」と「/usr/local/php5」を消すと、ファイル群は消えます*3。
配布元のページにはかいてありませんが、前述した通り、場合によっては/usr/sbin/envvarsが修正されるので、それも戻す必要があります。
最後の方の「#added by php-osx」から「export DYLD_〜」までの三行を消します。
バージョンアップについては、なにも考えず上書き実行できそうです。
ただし、見た限り/usr/local/php5-*の古いものを消してはいないようなので、そちらは手で消す必要がありそうです。
特別にOS標準のApacheを使いたい!という理由があって、わかって使うならこれを使うのも良いかなとおもいますが、そういうケースを除いたらXAMPPなどの方が既存を触らない分安全かなと思います。
brew
http://brew.sh/index_ja.html
事前にXcodeとCommand Line Toolsを入れる必要があります。
XcodeはAppstoreから、Command Line ToolsはMavericksの前はXcodeの環境設定のダウンロードから、Mavericksはシェルで「xcode-select --install」を実行しましょう。
Brewは以下で入ります。
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
次は、Formulaを配布しているjosegonzalez/phpレポをtap(追加)しましょう
homebrew/dupesは「Error: No available formula for zli」というエラーがでるのでtapします。
その流れでbrew install php55でPHP5.5.xが入ります。
brew tap homebrew/dupes
brew tap josegonzalez/php
brew install php55
brew完了時にも出力されますが、以下を.bash_profile等に追記すると簡単便利にphpにパスが通ります。
export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH"
アンインストールは追記をけした上で、
brew remove php55
です、ただし、依存などは残るとおもいますので、完全に消えるわけではありません。(Brewの都合)
phpenv + phpbuild
!注意!
phpenvは自己責任で正しくつかいましょう。特に貴方がrbenvをつかうのであればです。
phpenvはrbenvをパッチで改変してラップして動作させているもので、中身はrbenvであり、rbenvと容易くコンフリクトします。
「はあ〜〜PHPとかいう駄目言語をちょっと便利にするために、美しいRuby言語の便利ツールであるrbenvに触れる事すら普通許されないのに、あまつさえいじるとかコンフリクトする可能性をつくって、ヘボが使ったら悪評がでちゃうような設計にするの、万死というか拷問に値するし、マジでありえない」みたいな至極健全な意見も散見されますし、まぁ、わりと俺もそう思ってる。
https://github.com/phpenv/phpenv というrbenvを下敷きにしてないものも世の中にはあるんですが、これ動かない事が多すぎて私は使っていません。(今ためしたけど、やっぱうごかなかった)
なにを気を付けるかといえば、一言でいって、rbenvとphpenvを差し込む順序が問題になるので、 phpenvを後で読み込むように注意する必要があります。
https://github.com/CHH/phpenv の「IMPORTANT NOTES」を読み、できれば実際のコードもよみ、さらにいえば、Rubyとかを書く人種なのに、なぜPHPをつかわなければならないのか、PHPをまず辞めるという手段はないのだろうか?生きるとは、生命とは、死とは、美とは、退廃とは、そして宇宙の始まり…!!
等などを胸に手をおいて一晩考えてからphpenvをいれましょう、一晩まってもphpenvはにげません。
!注意終わり!
事前にXcodeとCommand Line Toolsを入れる必要があります。Brewの項目をみてください 。
あと、ライブラリのインストールにもBrewをつかうのでまずbrewをいれます、こっちもBrewの項目をみてください 。
Brewがはいったら、phpenvをインストールします。
Brewで入れる場合はこちら
手で入れる場合はこちら
$ git clone https://github.com/CHH/phpenv ~/phpenv
$ bash ~/phpenv/bin/phpenv-install.sh
$ rm -fR ~/phpenv
どちらでやってもいずれにしても~/.phpenvに入るので、 .bash_profileの最終行に以下を追加
export PATH="$HOME/.phpenv/bin:$PATH"
eval "$(phpenv init -)"
phpenvをいれたら、phpをビルドするツールphp-buildをインストールします。
php-buildもbrewでもインストールできますが、
・phpenvのプラグインとしてはいらないので、使い方が面倒
・definition(定義)が古いので、5.5.7とかがない(HEAD指定すればいいかもだけど…)
のでやめたほうがよいですね。
以下のようにしてインストールします。
$ mkdir ~/.phpenv/plugins
$ git clone https://github.com/CHH/php-build ~/.phpenv/plugins/php-build
$ phpenv install -l
usage: phpenv install VERSIONAvailable versions:
5.2.17
(略、ビルドできるバージョンが大量に出てくる、
一番下が一番新しいというわけではないので注意、数字を見ましょう)
早速ビルドしたいですが、その前に依存ライブラリを入れるます。
無駄をやらないためにはエラーが出たら、順次やる心構えでよいですが、面倒なら全部いれしまえ。
ただ、autoconfは入っていないときのエラーが絶望的にわかりづらいので、とりあえず入れて置いた方が良いですね。
$ brew install autoconf
$ brew install re2c
$ brew install jpeg
$ brew install libpng
$ brew install libmcrypt
$ brew install bison //ここは下記参照
残念ながらbisonで今現在問題があります。OSXに搭載されたbisonは2.3で、今のBrewで入るのは3.0.2。そして、PHPは2.4〜2.7のbisonでないとビルドができない、非常に間が悪い状態になっています。
以前はbrew versionsという風に指定して、ゴチャゴチャやると、過去のバージョンのbisonを入れることができましたが、今日ためしたら非推奨と言われたので今後つかえなくなりそう。そのあたりはこちらのエントリを見てください http://uzulla.hateblo.jp/entry/2013/12/29/165752
とりあえず、Formulaを用意したので(本家にもなげたので、マージされればよいな!)、以下で2.7を入れる事ができます。
curl https://raw.github.com/uzulla/homebrew-versions/bison27/bison27.rb > ~/bison27.rb
brew install ~/bison27.rb
rm ~/bison27.rb
※このときにJavaランタイムをいれるか?ときかれるかもしれないが、入れなくてかまわない。入れても良いけど。
その後、~/.phpenv/plugins/php-build/share/php-build/default_configure_options の一行目に*4
YACC=/usr/local/opt/bison27/bin/bison
を追加する事で入れたbison2.7を使ったビルドができるようになります。
(上はphp-buildが参照するので、なにか他のバージョンのビルドで問題があれば、外したりかえたりしてください)
ではやっとビルドです。
$ phpenv install 5.5.7
(PHPのビルド、時間がかかります)
(「The Log File is not empty,〜」などといわれますが、大体の場合問題はない)
$ phpenv global 5.5.7
$ php -v
PHP 5.5.7 (cli) (built: Dec 17 2013 04:21:20)
phpenvはパスを通したりする必要はありません。
アンインストールは記述を消して.phpenvを消すだけです。
一部のビルドしたバージョンだけ消したい場合には.php/versions/の指定のバージョン番号のディレクトリを消しましょう。
まとめ
まあ色々な入れ方があるんですけど、やっぱ判る人はphpenv+php-buildが一番いいとおもいます。最新バージョンいれ放題だし、変え放題だし、問題あればもどせるし。
初心者なら、やっぱりXAMPPは良いのではないですかね、なんかぶっ壊れても消して入れ直すだけだし。バージョンアップも差し替えるだけだし。
というか、後でバージョンをあげるのが他の方法はケッコーだるい。
Brewはわりと簡単にできそうですけど、パッケージでファイルがざっくり消えて、ざっくりはいるるみたいなの、なにがおこるのかよくわからないのと、php56になったらどうなんの?って所もあって軽い不安感はあります。
php-osx.liip.chについてはまったくしらなかったダークホースなので、詳しいこと知っている人がいたら、是非おしえてください。
ここまで簡単便利は他にないですけど、アンインストールとかバージョンアップのことあんま考えられてないっぽいので…。
アンインストール方法普通にかいてありました。見落としておりました、すみません。かさねて指摘有り難うございます > id:koriym さん
バージョンアップの方法も、コードバラしたらなんとなくわかりました(上の方に追記)ただ、詳しく見てみても、DYLD_LIBRARY_PATHいじってるのと、綺麗なアンインストールが多少面倒なので、あんまりおすすめしません。