HomebrewでPhpStorm向けのPHP環境を構築する

基本的にウェブの開発環境は仮想環境で実行しているんだけどPhpStormで開発しているときはホストOSに実行環境があると便利なのでhomebrewで環境構築してみたメモ。

## 環境

* Mac OS X 10.8.2
* Homebrew + phpjosegonzalez/homebrew-php
* PhpStorm 5.0.4

PHPのバージョンを細かく管理するならphpbrewだが、ただPhpStormから使いたかっただけなのでjosegonzalezさんのFomuraで手っ取り早く構築する。

## PHP 5.4のインストール

PHP5.4で[ビルトインのウェブサーバ](http://php.net/manual/ja/features.commandline.webserver.php)が追加されてちょっとした確認のときに便利なのでPHP5.4を使う。

OSXに入っているものは使う思想のHomebrewではPHPの最新バージョンは入っていないので[phpjosegonzalez/homebrew-php](https://github.com/josegonzalez/homebrew-php)を使う。


```
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
brew install php54 --with-mysql --with-fpm
brew install php54-intl
```

オプションは`brew options php54`で見れるので必要なものを入れるといい、デフォルトでpearオプションは付いている。なぜか--with-intlが壊れてるなど警告がでたので`php54-intl`を別途追加。

php --iniで `/usr/local/etc/php/5.4/php.ini` あたりが設定ファイルのパスとして出力される。

PhpStormではOSXでデフォルトでインストールされているPHP(/usr/bin/php)が認識されていたりするので
Project Settings > PHP > Interpreter の … で Interpreters ウインドウを開いて + で

|項目|値|
|:-----------|:------------|
|Name|homebrew/php|
|PHP Home|/usr/local/bin|

を追加して Interpreter で homebrew/php を選ぶ。更に include pathに /userr/local/Cellar/php54/5.4.x/lib/php を追加しておく。

## Composer

[Composer](http://getcomposer.org/)もあったのでHomebrewからインストール。

```
brew install composer
```

PhpStormのProject Settings > PHP > Composerの**Path to composer.phar**に```/usr/local/bin/composer```を設定する。

/usr/local/bin/composer



## PHP Code Sniffer

コードスタイルの検証ツールである[PHP Code Sniffer](http://pear.php.net/package/PHP_CodeSniffer)は

```
brew install php-code-sniffer
```

でインストールできる。

PhpStormからは Project Settings > PHP > Code Sniffer から path に /usr/local/bin/phpcs を設定。

Project Settings > Inspections > PHP > PHP Code Sniffer validation にチェックを入れておくと、ファイルやディレクトリを右クリック > Inspect Code… からも利用できる。

## PHPUnit


### PEARを使う

Fomuraには見当たらないのでPEARで入れてしまう。ただ下記作業はPHPのバージョンが変わるごとに同期する必要あるのであまり良いやり方には思えない。

```
sudo pear config-set auto_discover 1
sudo pear install pear.phpunit.de/PHPUnit
```

成功すれば/usr/local/Cellar/php54/5.4.x/lib/php/PHPUnit/に入る。

プロジェクトに[phpunit.xml](http://www.phpunit.de/manual/3.7/ja/appendixes.configuration.html)を作っておき右クリック > Run … で実行できる。

ターミナルから使いたい場合はパスを通しておく。

```
cd /usr/local/bin
ln -s ../Cellar/php54/5.4.11/bin/phpunit phpunit
```

### Composerを使う

プロジェクト毎に[PHPUnitをcomposerでインストール](http://qiita.com/makoto_kw/items/b700a954f044f0b7a23d)する場合は PHP > PHPUnit の設定で **Use Custom Loader**  を選択し vendor/autoload.php を **Path to script** から選択すればいい。
（絶対パスを設定しても設定ファイルには$PROJECT_DIR$/vendor/autoload.phpになっている）




## Xdebug

```
brew install php54-xdebug
```

でインストール。

```/usr/local/etc/php/5.4/conf.d/ext-xdebug.ini
xdebug.remote_enable=1
xdebug.remote_autostart=1
```

を設定するか、あるいはサーバ実行時に指定。

```
php -S localhost:8080 -t /path/to/document-root -d xdebug.remote_enable=1 -d xdebug.remote_autostart=1
```

ちなみにPhpStormではRun > Edit Configration… から + で**PHP Built-in Web Server**を追加すると、PhpStromから実行、停止ができるようになる。

あとは Run > Start Listen PHP Debug Connectionsを実行する。ツールバーの電話の受話器みたいなアイコンからもOn/Offできる。

リスニングを開始するとxdebug.remote_autostartを有効にしているのでブラウザでページにアクセスするとPhpStormとお話が始まり、最初のアクセスでは実行しているファイルのパスを聞かれるのでそれを合わせるとソースコード上でブレークできる。

## stubs

拡張ライブラリの補完のため

* http://youtrack.jetbrains.com/issue/WI-174
* http://youtrack.jetbrains.com/issue/WI-15465