PHPerがMacbookAirを買ったら直ぐにすること 2012 

ちょっと大げさなタイトルですが、あくまで私個人の環境構築手順をまとめたものです。WindowsからMacに乗り換えたばかりで、どうやってPHPの開発環境を整えるか分からないPHPerに向けの「開発環境を整えるためのガイド」と考えてください。

既にMacでAMP環境を構築したことがあるPHPerにとっても有用な情報を含めたつもりです。その例としては、php-buildとphp-versionで複数PHPバージョン環境の構築の手順、複数PHPバージョンとApacheの連携方法などがあります。

MacをUnix的に使えるようにするため、CUIで設定する手順を含んでいますが、怖がらずにやってみてください。ターミナルはあなたに噛み付いたりしません :) CUIに慣れてない方は、「難しい」と感じるかもしれませんが、きっとのちのちの財産になるはずです！

2012年版では「PHPerがMacbookAirを買ったら直ぐにすること」の[2011年版](http://suin.asia/2011/03/06/macbookair_kick_start_for_phper)をベースに、トレンドを取り入れたり、導入方法が変わっているものについては手順を修正しました。昨年版で紹介したMacPortsはHomebrewに置き換えました。またXcodeはAppStoreで入手できるようになったため手順を改めました。

## PHPerがMacbookAirを買ったら直ぐにすること

1. ローカルアカウントの作成
1. Xcodeのダウンロード&インストール
1. エディター/IDEのダウンロード&インストール
1. ブラウザのダウンロード&インストール
1. 共有の設定
1. ターミナルのセットアップ
1. Homebrewのダウンロード&インストール
1. Apache + MySQL + PHP のセットアップ
1. SSHのセットアップ

# ローカルアカウントの作成

「アカウント名」にコダワリのある人は注意して入力しましょう。アカウント名はユーザディレクトリのディレクトリ名になります。後で変えるのはめんどくさいです。私はWeb上のハンドルネーム suin を必ず入力します。

# Xcodeのダウンロード&インストール

XcodeはiOS/Macアプリを開発するためのツールですが、iOS/Macアプリを作らないPHPerにとっても便利な開発ツールが詰まってるのでインストールしておくことをお勧めします。 XcodeはMac App Storeから無料でダウンロードできます。 Xcodeは容量が大きいため時間がかかるので、まず最初にダウンロードを始めておきます。ダウンロードするためにはApple IDが必要なのであらかじめ作っておきます。


# エディター/IDEのダウンロード&インストール

自分がよく使うエディタがあればそれを入れます。Macを始めたばかりでどんなエディタがあるかよく分からない人は、とりあえず [CotEditor](http://sourceforge.jp/projects/coteditor/)、[Coda](http://www.panic.com/jp/coda/)、[TextMate](http://macromates.com/)、[MacVim](http://code.google.com/p/macvim-kaoriya/)をすべてインストールしてみて自分に合うものを探しましょう。

PHP用のIDEとしてはPhpStromを入れておきます。

*vimを使わない人、vimがなんだか分からないは CotEditor を入れてください。このあとのチュートリアルで使います。*

# ブラウザのダウンロード&インストール

主要なブラウザはこの際、いれておきましょう。

* [Firefox](http://mozilla.jp/firefox/)
* [Google Chrome](http://www.google.co.jp/chrome/intl/ja/landing.html)
* [Opera](http://jp.opera.com/)


# ユーティリティのダウンロード&インストール

* [Colors](http://mattpatenaude.com/): シンプルなカラーピッカー。
* [Dropbox](https://www.dropbox.com/): オンラインストレージ。
* [Hoster](http://www.redwinder.com/macapp/hoster/): hostsファイルをGUIで設定するアプリ。
* [Sequel Pro](http://www.sequelpro.com/): MySQLのGUIクライアント。phpMyAdminより便利。
* [Skype](http://www.skype.com/intl/ja/home/): チャット・音声通話アプリ。
* [Alfred](http://www.alfredapp.com/): アプリケーションランチャー。
* [Total Terminal](http://totalterminal.binaryage.com/): ショートカットキーでTerminalを起動できる。


# 共有の設定

Dockにある「システム環境設定」から「共有」を開き、共有の設定をします。

![](https://lh3.googleusercontent.com/_dG0BBWAhWis/TXNaG9dQYtI/AAAAAAAABZI/EsYd-rUdpPw/s400/スクリーンショット（2011-03-06%2017.08.24）.png)

## 「コンピュータ名」を設定
デフォルトだと「○○ ○○ の MackBook Air」となっていますが、これだと長すぎるので短く簡潔な名前に変更します。例えば、私のアカウント名はsuinなので、SuinMacbookAirのようにします。こうすることで、HTTPでMAMPにアクセスするときや、SSHでリモートログインするときに、http://suinmacbookair.local/ や ssh suin@suinmacbookair.local のようにでき、複数のマシン・グループでのウェブ開発の利便性が高まります。

## 「ファイル共有」をONにする
他のマシンからMacbookAirの共有フォルダを参照できるようになります。

## 「リモートログイン」をONにする
SSHで他のマシンからMacbookAirにログインできるようになります。

# ターミナルのセットアップ

「ターミナル」はWindowsでいう「コマンドプロンプト」です。コマンドラインに詳しくない人でも、そのうち必ず使うようになるので、設定しておきましょう。ターミナルは「アプリケーション」→「ユーティリティ」にあります。デフォルトだと味気ないアプリなので、いろいろ設定をしてやりましょう。

![](https://lh4.googleusercontent.com/_dG0BBWAhWis/TXNaHRVnPGI/AAAAAAAABZQ/p7AKl0kb5K8/s400/スクリーンショット（2011-03-06%2017.29.59）.png)

## ターミナルの見た目をプロにしよう

* 「アプリケーション」→「ユーティリティ」→「ターミナル」を起動する。
* メニューバーから「ターミナル」→「環境設定」を開く。
* 「起動」タブを開く。
* 「起動時に開く：次の設定の新しいウィンドウ」のセレクトボックスから「Pro」を選択する。

![](https://lh3.googleusercontent.com/_dG0BBWAhWis/TXNaHho55YI/AAAAAAAABZY/EDyr_nad7qo/s400/スクリーンショット（2011-03-06%2017.32.25）.png)

* 「設定」タブを開く。
* 「Pro」を選択状態にする。
* 「デフォルト」をクリックし、「Pro」をデフォルトにする。

![](https://lh6.googleusercontent.com/_dG0BBWAhWis/TXNaJG4uxHI/AAAAAAAABZk/L-1DRXL1JLs/s400/スクリーンショット（2011-03-06%2017.35.24）.png)

* 「設定」を閉じる。
* 一旦、ターミナルを閉じ、ターミナルを開いて、Proのテーマが適用されているか確認する。

![](https://lh6.googleusercontent.com/_dG0BBWAhWis/TXNaIBXe2eI/AAAAAAAABZc/Ko7y6x_t9Fo/s400/スクリーンショット（2011-03-06%2017.37.26）.png)

## ターミナルの設定ファイルを作ろう

> と、その前に、コマンドから起動するエディタの設定をしておきます。
>
> ## CotEditorの設定
>
>> いきなりvimエディタを使うのが難しい方のために、CotEditorを使ってファイルを編集するようなチュートリアルになっています。vim使いの方などは ```open -a CotEditor``` の部分を ```vim``` などと読み替えていただいて構いません。
>
> CotEditorを使う方は文字コードの設定を完了しておいてください。
>
> CotEditorを起動する > "CotEditor" > "環境設定" > "フォーマット" タブ 
>
> "エンコーディング" の "既存ファイル" の設定を "自動認識" から "Unicode (UTF-8)" に変更し、CotEditorを終了する。

ターミナルの設定をさらに細かくするために、次の二つのファイルを、ホームディレクトリに作ります。ホームディレクトリとは/Users/あなたのアカウント/のことです。

* .bash_profile
* .bashrc

まず、ターミナルを開きます。（すでに開いていると思いますが。）上のファイルを作るために次のコマンドを順に実行してください。よく分からない人はターミナルにコピペしてください。ちなみに上のファイルは不可視ファイルなのでFinderでホームディレクトリを開いても見ることができません。

```
cd
touch .bash_profile
touch .bashrc
```

![](https://lh6.googleusercontent.com/_dG0BBWAhWis/TXNaIZDxE4I/AAAAAAAABZg/Mcr6ln50DLU/s400/スクリーンショット（2011-03-06%2017.48.24）.png)


次に、.bash_profileをエディタで開きます。開くために次のコマンドを実行してください。

```
open -a CotEditor .bash_profile
```

.bash_profileに次の行を追加して保存します。これは、.bashrcがあればそれを読み込むという処理です。PHPで言えば ```if(file_exists('.bashrc')) include '.bashrc';``` です。保存したらエディタを閉じます。


```txt:.bash_profile
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi
```

今度は、.bashrcの設定するためにファイルを開きます。

```
open -a CotEditor .bashrc
```

アプリケーションやコマンドへのショートカットコマンドを設定していきます。私の設定は下のようになっています。自分の好みに合わせて設定してください。よく分からなければ、そのままコピペでもいいと思います。保存したらエディタを閉じます。

```txt:.bashrc
# Application Shortcuts
alias cot='open -g -a CotEditor' # ターミナルからCotEditorを開く
alias coda='open -g -a Coda' # ターミナルからCodaを開く
alias safari='open -g -a safari' # ターミナルからSafariを開く
alias console='open -a console' # ターミナルからコンソールを開く

# for shortcut
alias up='cd ..'
alias upp='cd ../..'
alias uppp='cd ../../..'
alias ls='ls -GwF'
alias la='ls -alh'
alias t='tar zxvf'
alias t-='tar xvf -'
alias b='bzip2 -dc'
alias dh='df -h'
alias vi='vim'
alias v='vim'
alias sr='screen -d -R'
alias grep='grep --exclude=*.svn*'
alias greprn='grep -rn --exclude=*.svn*'
alias bye='sudo shutdown -h now'

# for svn
alias st='svn st'
alias stu='svn st -u'
alias sd='svn di'
alias sdi='svn di'
alias sad='svn add'
alias sup='svn up'
alias sci='svn ci'
alias scim='svn ci -m'

# for git
alias gst='git status'
alias gci='git commit'
alias gdi='git diff'
alias gdc='git diff --cached'
alias gad='git add'
```

設定を書き込んだばかりだと、ターミナルに反映されないので、ターミナルを再起動します(ターミナルを再起動するのが面倒な人は ```bash``` コマンドを実行してください)。上の設定をコピペした場合、Safariをとじた状態で、safariとだけタイプしてエンターを押してみます。そこでSafariが起動すれば、設定が反映されていることになります。


## プロンプトの書式をカスタマイズしよう

プロンプトとは、ターミナルの行頭に出ている![](https://lh5.googleusercontent.com/_dG0BBWAhWis/TXNaJ9suQzI/AAAAAAAABZ0/GcUofAg36zk/s800/スクリーンショット（2011-03-06%2018.11.51）.png)の部分を言います。デフォルトでも全く問題はありません。ただ、ちょっと白黒で寂しいですし、行の前後にスペースがあったほうが見やすいので、カスタマイズしてしまいます。

再び、.bashrcを開いて、編集します。

```
open -a CotEditor .bashrc
```

```
PS1="\n\`if [ \$? = 0 ]; then echo \[\e[32m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\` (\h:\w)\n* "
```

保存したら、ターミナルを再起動(または ```bash``` コマンド実行)します。プロンプトが下のようになっていれば設定成功です。

![](https://lh5.googleusercontent.com/_dG0BBWAhWis/TXNaKUogQgI/AAAAAAAABZ8/d1mHRSf39r4/s400/スクリーンショット（2011-03-06%2018.20.01）.png)

## 自分用シェルスクリプト置き場を作ろう

/Users/あなたの名前/bin をシェルスクリプト置き場としてディレクトリを作ります。

```
mkdir ~/bin
```

ディレクトリを作ったら.bashrcを修正してパスを通します。

```
open -a CotEditor .bashrc
```

下記を.bashrcに追加します

```text:.bashrc
export PATH=~/bin:$PATH
```

保存したら、ターミナルを再起動(または ```bash``` コマンド実行)します。

# Homebrewのダウンロード

Homebrewは、Unix向けに開発されたオープンソース・ソフトウェアを手軽にインストールすることができるMacOSX用のパッケージです。「Unixで使えるあのコマンド、Macでも使いたい！」というときに簡単にコマンドをインストールすることができます。

* [Homebrew](http://mxcl.github.com/homebrew/)

ターミナルで下のコマンドを実行してインストールします:

```
/usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
```

Homebrewのしきたりとして、インストール直後や問題が起こった時に ```brew doctor``` コマンドを叩いて状況を確認するというものがあります:

```
brew doctor
```

```html:結果例
Warning: You have no /usr/bin/cc.
This means you probably can't build *anything*. You need to install the Command
Line Tools for Xcode. You can either download this from http://connect.apple.com
or install them from inside Xcode's Download preferences. Homebrew does not
require all of Xcode! You only need the Command Line Tools package!

Warning: Git could not be found in your PATH.
Homebrew uses Git for several internal functions, and some formulae use Git
checkouts instead of stable tarballs. You may want to install Git:
  brew install git

Warning: Your Xcode is configured with an invalid path.
You should change it to the correct path. Please note that there is no correct
path at this time if you have *only* installed the Command Line Tools for Xcode.
If your Xcode is pre-4.3 or you installed the whole of Xcode 4.3 then one of
these is (probably) what you want:

    sudo xcode-select -switch /Developer
    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

DO NOT SET / OR EVERYTHING BREAKS!
```


```/usr/bin/cc``` が無いといけないらしいので、Xcodeで *Command Line Tools* を入れます:

> Xcode > Preferences > Downloads で Command Line Tools を Install する。

Xcodeのパスを設定する:

```
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
```

brew 本体のアップデートを行う:

```
brew update
```

Homebrewでインストールしたunixツールが使えるようにパスを通します:

```
open -a CotEditor ~/.bashrc
```

Homebrew用に ```/usr/local/sbin``` と ```/usr/local/bin``` へのパスを通すために、.bashrc に下記の2行を追加します。

```txt:.bashrc
export PATH=/usr/local/sbin:$PATH # for Homebrew
export PATH=/usr/local/bin:$PATH  # for Homebrew
```

## 便利なコマンドを入れておこう

以上で HomeBrew の設定は完了です。ためしに、便利なコマンドを入れてみましょう。

[treeコマンド](http://x68000.q-e-d.net/~68user/unix/pickup?tree)や[wgetコマンド](http://x68000.q-e-d.net/~68user/unix/pickup?keyword=wget&target=command)など、あると便利なコマンドを入れておきます。ターミナルから次のコマンドを実行することでインストールできます。

```
brew install tree
brew install wget
```

# Apache + MySQL + PHP のセットアップ

MacビルトインのApacheを使ってもいいですが、Macのアップデートで変更があるといやなので、HomeBrewで別途システムとは独立した形でApacheをインストールします。また、PHPは5.2, 5.3, 5.4の環境を切り替えられるように、php-buildとphp-versionをインストールします。

> Apache + MySQL + PHP 環境に特にこだわりがない方、とりあえず手っ取り早く入れたい方は、[MAMP](http://www.mamp.info/en/index.html) をインストールしてこのセクションは読み飛ばしてください。WindowsではXAMPPが有名ですが、MAMPもXAMPPのようなアプリです。

## Apacheをインストールする

Apache 2.2を扱っているFormulaを登録する:

```
brew tap Homebrew/dupes
```

httpdがインストール可能か確認する:

```
brew search httpd
```

httpdをインストールする:

```
brew install httpd
```

## MySQLをインストールする

mysqlをインストールする:

```
brew install mysql
```

mysqlのデータベースをセットアップする:

```
mysql_install_db --verbose -user=$(whoami) --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
```


## Apacheを起動してみる

apachectlはApacheを制御するコマンドです。apachectlがどこにあるか確認してみます。

```
which apachectl
```

上の結果が、/usr/local/sbin/apachectl であればOKです。そうでなければ、/usr/local/sbin と /usr/local/bin へパスが通っていない可能性があります。.bashrcの内容を確認してください。

Apacheを起動する:

```
sudo apachectl start
```

パスワードを聞かれるので自分のアカウントのパスワードを入力します。ちなみに、```sudo``` というのは管理者(root)として実行するという意味です。Macでは1024以下のポートを開くにはroot権限が必要になります。ApacheはHTTPなので80番ですね。

うまく起動できたか、[http://localhost](http://localhost)にアクセスしてみて確認します。｢It works!｣と出れば成功です。

次に `httpd.conf` の設定を変更します:

```
open -a CotEditor /usr/local/etc/apache2/httpd.conf
```

### 1. サーバー名を設定する

```
#ServerName www.example.com:80
```

↓

```
ServerName localhost:80
```

### 2. 実行ユーザを自分にする

```
User daemon
Group daemon
```

↓

```
User suin
Group staff
```

`suin`  の部分は自分のユーザ名にしてください。自分のユーザ名は `whoami` コマンドで確認できます。

### 3. アクセス拒否を取り払う:

```
<Directory />
    Options FollowSymLinks
#    AllowOverride None
    AllowOverride All
#    Order deny,allow
#    Deny from all
</Directory>
```

`Order deny,allow` と `Deny from all` をコメントアウトしてください。

.htaccessを使うことがあると思うので、 `AllowOverride None` を `AllowOverride All` に変更します。

### 4. ディレクトリにアクセスしたときに `index.php` があれば実行するようにする:

```
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
```
↓

```
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
```

### 5. Virtual Hostを有効化する: 

httpd-vhostsがコメントアウトされているので、コメントアウトを解除してください。

```
Include /usr/local/etc/apache2/extra/httpd-vhosts.conf
```

保存したら Apache を再起動します:

```
sudo apachectl restart
```

うまく再起動できれば設定ファイル変更OKです。

もし、起動に失敗したら、`apachectl configtest` コマンドで設定ファルの書き方に問題がないか調べてください。

```
apachectl configtest
```

## MySQLサーバを起動してみる

続いてMySQLサーバを起動してみます。

```
mysql.server start
```

```txt:出力例
Starting MySQL
.. SUCCESS!
```

Apacheを起動するときは```sudo```で実行する必要がありましたが、MySQLはデフォルト3306番ポートで起動するので、rootとして実行する必要はありません。

クライアントでつないでみる:

```
mysql -u root
```

```txt:出力例
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.20 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
```

試しに、データベース一覧を出すクエリを実行してみます:

```
mysql> SHOW DATABASES;
```

```txt:結果例
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)
```

mysqlクライアントを終了します:

```
mysql> quit
```


## PHPインストールの準備

PHP関連のツールを扱っているFormulaを登録する:

```
brew tap josegonzalez/php
```

php-build, php-versionをインストールする:

```
brew install php-build
brew install php-version
```

.bashrcにphp-buildのパスを追加する:

```txt:.bashrc
export PHP_VERSIONS=${HOME}/local/php/versions
[ -f $(brew --prefix php-version)/php-version.sh ] && source $(brew --prefix php-version)/php-version.sh && php-version 5.4.0 >/dev/null
```

PHPのコンパイルに必要なライブラリをインストールする:

```
brew install re2c
brew install jpeg
brew install libpng
brew install mcrypt
```

PHPのインストール先ディレクトリを作成する:

```
mkdir -p $HOME/local/php/versions
```

## PHP5.4.0をインストールする

PHP5.4のconfigureパラメータを修正して、Apacheモジュールを生成するようにする:

```
open -a CotEditor /usr/local/share/php-build/definitions/5.4.0
```

```txt:/usr/local/share/php-build/definitions/5.4.0
configure_option "--with-apxs2" "/usr/local/sbin/apxs"
install_package "http://www.php.net/distributions/php-5.4.0.tar.bz2"
install_pyrus
install_xdebug_master
```

PHP5.4をコンパイル＆インストールする:

```
php-build 5.4.0 $HOME/local/php/versions/5.4.0
```

ApacheのPHPモジュールを退避する:

```
mv /usr/local/opt/httpd/libexec/libphp5.so $HOME/local/php/versions/5.4.0/libphp5.so
```

## PHP5.3.10をインストールする

PHP5.3のconfigureパラメータを修正して、Apacheモジュールを生成するようにする:

```
open -a CotEditor /usr/local/share/php-build/definitions/5.3.10 
```

```txt:/usr/local/share/php-build/definitions/5.3.10 
configure_option "--with-apxs2" "/usr/local/sbin/apxs"
configure_option -D "--enable-fpm"
install_package "http://www.php.net/distributions/php-5.3.10.tar.bz2"
install_pyrus
install_xdebug "2.1.3"
```

※ 5.3.10 では "--enable-fpm" を無効化しないと｢You've configured multiple SAPIs to be build. You can build only one SAPI module and CLI binary at the same time.｣というエラーが出てしまうので、`configure_option -D "--enable-fpm"` が必要になる。

PHP5.3をコンパイル＆インストールする:

```
php-build 5.3.10 $HOME/local/php/versions/5.3.10
```

ApacheのPHPモジュールを退避する:

```
mv /usr/local/opt/httpd/libexec/libphp5.so $HOME/local/php/versions/5.3.10/libphp5.so
```

## PHP5.2.17をインストールする

PHP5.2のconfigureパラメータを修正して、Apacheモジュールを生成するようにする:

```
open -a CotEditor /usr/local/share/php-build/definitions/5.2.17 
```

```txt:/usr/local/share/php-build/definitions/5.2.17
configure_option "--with-apxs2" "/usr/local/sbin/apxs"

configure_option "--enable-fastcgi"

configure_option -R "--with-mysql"
configure_option -R "--with-mysqli"
configure_option -R "--with-pdo-mysql"

with_pear

install_package "http://museum.php.net/php5/php-5.2.17.tar.bz2"
install_xdebug "2.1.3"
```

PHP5.2をコンパイル＆インストールする:

```
php-build 5.2.17 $HOME/local/php/versions/5.2.17
```

ApacheのPHPモジュールを退避する:

```
mv /usr/local/opt/httpd/libexec/libphp5.so $HOME/local/php/versions/5.2.17/libphp5.so
```

mime.typesにPHPを登録する:

```
open -a CotEditor /usr/local/etc/apache2/mime.types 
```

```txt:/usr/local/etc/apache2/mime.types
application/x-httpd-php                         php
```

## php-versionの動作確認

php-versionは先程インストールした、PHP 5.2, 5.3, 5.4 の環境をコマンド一発で切り替えられるツールです。

php-versionでPHP 5.4.0にスイッチするのを試してみます:

```
php-version 5.4.0 
```

```txt:出力例
SWITCHED PHP VERSION TO: 5.4.0                                                 
NEW PHP ROOT DIRECTORY : /Users/suin/local/php/versions/5.4.0  
```

実際にどのPHPが有効になっているか確認します:

```
php -v
```

```txt:出力例
PHP 5.4.0 (cli) (built: Apr 12 2012 11:55:21)                                  
Copyright (c) 1997-2012 The PHP Group                                          
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies                  
    with Xdebug v2.2.0rc2-dev, Copyright (c) 2002-2012, by Derick Rethans   
```

## ApacheのPHPモジュール切り替え用シェルスクリプトを作る

php-versionで切り替えられるのは、ターミナルで実行する php のバージョンのみです。そこで、ApacheのPHPのバージョンを切り替えるためのスクリプトを作ります。

```
touch ~/bin/apache-php-version
chmod +x ~/bin/apache-php-version
open -a CotEditor ~/bin/apache-php-version
```

下記の内容を apache-php-version に保存します。

```sh:~/bin/apache-php-version
#!/usr/bin/env bash

PROGRAM_APPNAME=$(basename $0)
PROGRAM_VERSION="1.0.0"
APACHE_LIBEXEC_DIR="${APACHE_PATH}/libexec"

show_help() {
	echo "${PROGRAM_APPNAME} ${PROGRAM_VERSION}" >&2
	echo ""                                      >&2
	echo "Usage  : ${PROGRAM_APPNAME} <version>" >&2
	echo "Example: ${PROGRAM_APPNAME} 5.4.0RC6"  >&2
	exit 1
}

check_php_home() {
	if [[ ! -d ${PHP_HOME} ]]
	then
		echo "Sorry, but ${PROGRAM_APPNAME} requires that \$PHP_HOME is set and points to an existing directory." >&2
		exit 1
	fi
}

check_apache_path() {
	if [[ ! -d ${APACHE_PATH} ]]
	then
		echo "Sorry, but ${PROGRAM_APPNAME} requires that \$APACHE_PATH is set and points to an existing directory." >&2
		exit 1
	fi
}

set_up_apache_module_path() {
	apache_module_path=$PHP_HOME/$PHP_VERSION/libphp5.so
}

check_apache_module_path() {
	if [[ ! -f ${apache_module_path} ]]
	then
		echo "Sorry, apache module not found: $apache_module_path"
		exit 1
	fi
}

check_apache_libexec_dir() {
	if [[ ! -d ${APACHE_LIBEXEC_DIR} ]]
	then
		echo "Directory not found: $APACHE_LIBEXEC_DIR"
		exit 1
	fi
}

replace_apache_module() {
	echo "Copy $apache_module_path to $APACHE_LIBEXEC_DIR/libphp5.so"
	cp $apache_module_path $APACHE_LIBEXEC_DIR/libphp5.so
}

restart_apache() {
	echo "Restarting apache..."
	sudo apachectl restart
}

[ $# != 1 ] && show_help
PHP_VERSION=$1
check_php_home
check_apache_path
set_up_apache_module_path
check_apache_module_path
check_apache_libexec_dir
replace_apache_module
restart_apache
```

次に、`apache-php-version` のためにApacheへのパスを通して、シェルを再起動します:

```bash:~/.bashrc
export APACHE_PATH=$(brew --prefix)/opt/httpd
```

切り替わるか試してみる:

まず、切り替わっているのが分かるように```phpinfo()```を書いたファイルをドキュメントルートに作っておきます。

```
touch /usr/local/opt/httpd/share/apache2/htdocs/phpinfo.php
open -a CotEditor /usr/local/opt/httpd/share/apache2/htdocs/phpinfo.php
```

```php:/usr/local/opt/httpd/share/apache2/htdocs/phpinfo.php
<?php
phpinfo();
```

切り替えを実行する:

```
apache-php-version 5.4.0
```

```txt:出力例
Copy /Users/suin/local/php/versions/5.4.0/libphp5.so to /usr/local/Cellar/httpd/2.2.22/libexec/libphp5.so
Restarting apache...
Password:
httpd: Could not reliably determine the server's fully qualified domain name, using suinair2.local for ServerName
```

ブラウザで [http://localhost/phpinfo.php](http://localhost/phpinfo.php) にアクセスします。phpinfoのバージョンが5.4.0になっているでしょうか？

```
apache-php-version 5.3.10
```

や

```
apache-php-version 5.2.17
```

も試してみてください。

# SSHのセットアップ

## 秘密鍵/公開鍵を作ろう

SSH秘密鍵・公開鍵を持ってない人はこの際作っておきましょう。

```
ssh-keygen
```

```txt:出力例
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/suin/.ssh/id_rsa): <= Enter押す
Created directory '/Users/suin/.ssh'.
Enter passphrase (empty for no passphrase): <= 秘密鍵のパスワードを決める
Enter same passphrase again:  <= 秘密鍵のパスワード確認
Your identification has been saved in /Users/suin/.ssh/id_rsa.
Your public key has been saved in /Users/suin/.ssh/id_rsa.pub.
The key fingerprint is:
99:04:e5:25:18:f9:3a:79:19:4c:ef:6e:a0:ee:e0:12 suin@suinair2.local
The key's randomart image is:
+--[ RSA 2048]----+
|      o=o .      |
|      oo.o       |
|       +o.       |
|       .+o.      |
|       oS+       |
|  E   + + .      |
|   ..  + o       |
|  .. ..   o      |
|   ..oo  .       |
+-----------------+
```

/Users/(あなたの名前)/.ssh というディレクトリが作られ、そこに秘密鍵 ```id_rsa``` と公開鍵 ```id_rsa.pub``` が作られます。公開鍵はサーバに送る用です。秘密鍵はサーバに送ったり誰かに貸したりしないようにします。

.

## SSHのログイン設定ファイルを作っておこう

ポート番号を変更しているサーバや鍵認証のサーバ、ドメインが長いサーバを使っていると、毎回```ssh -p 12345 -i ~/.ssh/id_rsa username@example.com```のような長いコマンドを打たなければならず不便ですね。そんなときは、```~/.ssh/config```ファイルに、サーバごとのログイン情報を書いておくとコマンドが短くなり利便性が増します。

```
cd ~/.ssh
touch config
open -a CotEditor config
```

~/.ssh/configファイルの書き方については[~/.ssh/config で簡単に複数ホストへのSSH接続を管理する](http://d.hatena.ne.jp/superbrothers/20090730/1248971671)や[.ssh/configの書き方](http://d.hatena.ne.jp/nauthiz/20100919/1284892108)などを参考にしてください。


# おわりに

以上で、とりあえず「直ぐにすること」は終えられたんじゃないかと思います。もう少し踏み込むと、PHPやApache、MySQLの設定、PHPUnitなどツール類のインストールなどやることは出てくるかと思います。これらの解説については他に詳しい記事があると思うので、そちらに譲ることにします。

PHPer向けということもあって、RubyやPython、Node.jsなどの環境構築には触れませんでしたが、他言語でもPHPerにとって有用なツールは沢山あります。是非、[【まとめ】これ知らないプログラマって損してんなって思う汎用的なツール 100超](http://qiita.com/items/f570f057a0ff927b47dc)をご覧になって、このまとめにあるツール名をキーワードに他言語のツールも探してみてください。