PhpStormとXdebugでVagrant仮想マシンのPHPをリモートデバッグ

2014年5月20日

PhpStorm

Vagrant + PhpStorm + Xdebug でブレークポイントを張って変数の状態をデバッグする方法を紹介します。Vagrant の synced_folder でソースコードを共有し、開発はホスト PC で、PHP 実行は仮想マシンで行っている方を対象としています。ホスト PC の PhpStorm でデバッグ実行ができるようになります。

ローカル PHP をデバッグする方法は以前書いた記事が参考になると思います。

PhpStorm+Xdebugでローカル環境のPHPをデバッグする方法

動作確認環境

  • Mac OSX Mountain Lion
  • PhpStorm7

目次

  1. Vagrant 仮想マシンの Xdebug を有効化
  2. Deployment を設定
  3. Xdebug 実行サーバの設定
  4. PHP Remote Debug 設定
  5. デバッグ実行

Vagrant 仮想マシンの Xdebug を有効化

Vagrant 仮想マシンの Xdebug を有効化します。php.ini(xdebug.ini) を以下のように設定します。

xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host="192.168.33.1"
xdebug.remote_port=9000
xdebug.idekey="PHPSTORM"

xdebug.remote_host は仮想マシンから見たホスト PC の IP アドレスを設定します。$_SERVER['REMOTE_ADDR'] と同じ値にしておけば良いと思います。Vagrant 仮想マシンの IP アドレスによって適宜変更してください。

xdebug.remote_port はデフォルトが 9000 ですが、PHP-FPM のポート番号のデフォルトも 9000 なので、かぶらないようにしましょう。

Xdebug のポート番号を確認

PhpStorm の Xdebug ポート番号を確認します。仮想マシンの xdebug.remote_port と同じ数字にしておきます。

config-xdebug
  1. PhpStorm の 設定ウィンドウを開き、Project Settings > PHP > Debug をクリック
  2. 必要に応じて Xdebug のポート番号を変更

Deployment を設定

仮想サーバに各種ファイルをデプロイする方法を設定します。仮想マシンの Xdebug の状態を PhpStorm から確認するために設定が必要です。

設定は過去に書いた記事と同じです。以下のリンクからご確認ください。

PhpStormでVagrant仮想マシンのPHPUnitを実行する # Deployment を設定

Xdebug 実行サーバの設定

Servers

設定ウィンドウを開き、左メニューから Project Setting > PHP > Servers を選択します。「+」ボタンをクリックして新規追加します。

phpunit-php-server-add

Xdebug 実行サーバを設定します。

phpunit-php-server
  1. Name は管理しやすい名前を入力
  2. Host は Vagrant 仮想マシンの IP アドレスを入力
  3. Port は PHP アプリケーションのポート番号を入力
  4. Debugger は Xdebug を選択
  5. Use path mappings にチェック
  6. File/Directoryで synced_folder で共有しているローカルのディレクトリを選択し、その右にある Absolute path on serverに仮想マシンの共有ディレクトリを入力

Validate remote environment

Servers 設定の Validate remote environment ボタンをクリックして、Vagrant 仮想マシンの Xdebug の状態を確認します。Xdebug に問題があるとここで警告してくれます。

phpunit-php-server-validate
  1. Deployment は先ほど設定したデプロイ設定を選択
  2. Local path to create validation script は Vagrant の synced_folder のルートを選択
  3. Validate ボタンをクリック

PHP Remote Debug 設定

メニュー > Run > Edit Configurations を選択します。

run-edit-config

左上の「+」ボタンをクリックし、PHP Remote Debug を選択します。

phpunit-remote-debug-add

PHP Remote Debug を設定します。

phpstorm-remote-debug-config
  1. Name は管理しやすい名前を入力
  2. Servers は Xdebug 実行サーバの設定で設定したサーバを選択
  3. Ide key は PHPSTORM と入力(php.ini の xdebug.idekey と同じ値に)

デバッグ実行

これまでの手順でデバッグの準備が整いました。ブレークポイントを張ってデバッグしてみましょう。

まず、PhpStorm をデバッグ待ち受け状態にします。

  1. 右上のプルダウンメニューから登録した Remote Debug を選択
  2. 電話機みたいなアイコン(Start Listen PHP Debug Connections)をクリック
xdebug-pull-down

ソースコードにブレークポイントを張り、ブラウザからアクセスします。ブレークポイントの位置でプログラムの実行が止まります。

phpunit-remote-debug-break

デバッグ実行を終了したい場合は「■(停止)」ボタンをクリックします。

phpunit-remote-debug-stop

テストを書いていればデバッガは不要になるはず

デバッガを起動するということは、そのコードの動きがよく分からないことを意味します。フレームワークなど、他人の書いたコード解析するためにデバッガを使うのは OK ですが、自分で書いたコードでデバッガを使うのは NG だと思います。デバッガに頼った開発をしている方は、今すぐデバッガを封印してテストを書く意識を持ちましょう。

-技術ブログ
-,