この間正式にリリースされた PhpStorm8。個人的に心待ちにしていた リモートマシンの PHPUnit を SSH 経由で実行する機能(Remote PHP interpreters) が追加されたので、早速試してみました。
ホスト PC の PhpStorm から Vagrant 仮想マシンの PHPUnit を実行するには、以前このブログで紹介した 「PHPUnit on Server」 という機能を使えばできますが、テストの実行が HTTP 経由のため制約が多く、設定も複雑で、アプリケーションによっては動作させるのが難しいこともありました。
新しく追加された SSH 経由の PHPUnit 実行は SSH でつながれば OK なので、様々なプロジェクトで利用できそうです。Vagrant のsynced_folder を使ってホスト PC で開発を行っている方や、Windows ホストで VirtualBox 上で PHP 開発している方はぜひお試しください。
動作確認環境
- Mac OSX 10.11
- PhpStorm 2016.2
目次
- Deployment を設定する
- Remote PHP Interpreter を設定する
- PHPUnit を設定する
- Run メニューで PHPUnit を設定する
- Cannot open file とエラー表示されるときは
Deployment を設定する
Preferences > Build, Execution, Deployment > Deployment を選択します。左上の「+」ボタンをクリックしてサーバを追加します。
Add Server
Name には管理しやすい名前を、Type は「SFTP」を選択します。

Connection タブ
Connection タブで Vagrant 仮想マシンへ SSH で接続する設定を行います。

Mappings タブ
Mappings タブで、ローカルのファイルパスと Vagrant 仮想マシンのファイルパスとのマッピングを設定します。サンプルの Vagrantfile では、ローカルの vagrant-php-symfony2-sandbox/share/symfony
を Vagrant 仮想マシン上では /var/www/vagrant/symfony
にマウントしているので、「Local path」と「Deployment path on server」にそれぞれ設定します。

Remote PHP Interpreter を設定する
Interpreter に Vagrant 仮想マシンの PHP を設定します。
Remote Interpreter を追加
Preferences > Languages & Frameworks > PHP を選択します。PHP language level は Vagrant にインストールされているバージョンを選択します。Interpreter の右側の「...」ボタンをクリックします。

Interpreter ウィンドウが開いたら、左上の「+」ボタンをクリックし、「Remote...」を選択します。

リモートマシンへの接続方法を設定
Configure Remote PHP Interpreter では、「Deployment configuration」を選択し、プルダウンで先ほど設定した「Vagrant」を選択します。

設定を確認して保存
Name に管理しやすい名前をつけます。それ以外はデフォルトで設定されていると思います。PHP の PATH やバージョンなど確認し、問題なければ「OK」ボタンをクリックします。

最初の画面に戻ってきました。これで Interpreter の設定は完了です。

PHPUnit を設定する
Vagrant 仮想マシンの PHPUnit を読み込むように設定します。Composer からインストールした PHPUnit でも大丈夫です。
Interpreter を選択
Preferences > Languages & Frameworks > PHP > PHPUnit を選択します。左上の「+」ボタンをクリックし、「By Remote Interpreter」を選択します。

Intepreter は、さきほど登録した 「Remote PHP」 を選択します。

リモートマシンの PHPUnit の読み込み方法を設定
PHPUnit の読み込み方法を設定します。Composer からインストールした PHPUnit の場合は Composer の autoload.php を設定します。PHPUnit の config ファイルや、bootstrap ファイルがあればここで設定しておくと便利です。

Run メニューで PHPUnit を設定する
Run 設定を追加
上部メニュー > Run > Edit Configurations を選択します。

左上メニューの「+」ボタンをクリックして、「PHPUnit」 を選択します。

Test scope に テストの実行単位を設定します。ここでは Class を選択しています。

ツールバーの三角ボタンからテスト実行。

グリーンが表示されました。

Cannot open file とエラー表示されるときは
Test scope に Directory, Class, Method を選択すると「Cannot open file」エラーになる場合は、Deployment 設定がうまくいっていない可能性が高いです。Deployment を設定する を参考に設定を見なおしてください。
まとめ
- Deployment 設定で ローカルのパスと Vagrant 仮想マシンの パスをマッピングする
- PHP Interpreter 設定で Vagrant 仮想マシンの PHP を設定する
- PHPUnit 設定で Vagrant 仮想マシンの PHPUnit を設定する
テストをエディタから実行できるようにすると、開発リズムが格段にあがります。Vagrant で PHP 開発している方はぜひお試しください。