XAMPP × Xdebug × PHPStorm でリモートデバッグを行う

f:id:hrt0kmt:20150607214049p:plain

動作環境

  • Windows8(64bit)
  • XAMPP v3.2.1
  • PHPStorm v8.0.3

Xdebugの機能

  • リモートデバッガを行う
  • var_dumpの出力結果を整形する
  • リモートプロファイラを行う

1セッション内のPHPスクリプトや関数処理にかかった時間を計り、ログに残します。
プロファイラとは、プログラムが処理をどの順序で実行したのかを監視し、記録するプログラム



1. php.iniの設定

C:\xampp\php\php.ini

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.default_enable = 1
xdebug.remote_enable = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "C:\xampp\tmp"
;; export result of profile
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.trace_output_dir = "C:\xampp\tmp"
xdebug.idekey="PHPSTORM"
;; anything ok!! but same key as PhpStorm
xdebug.remote_connect_back = on
xdebug.remote_autostart = 1



2. XAMPPへのパスを通す

Setting PHP
  1. Setting > Language & Frameworks > PHP
  2. PHP Language Level
  3. Interpreter

f:id:hrt0kmt:20150529195158p:plain

Setting XAMPP
  1. Build,Execution,Development > Development > Add Server
  2. Name : XAMPP Apache, Type : Local
  3. Upload, Download project files : C\xampp\htdocs
  4. WebServer Root URL : http://localhost

f:id:hrt0kmt:20150529195213p:plain

f:id:hrt0kmt:20150529195226p:plain



3. Xdebug起動・終了のブックマークレット作成

php.iniの設定がxdebug.remote_autostart = 1の場合、ブックマークレットは使用しません。

ここでサーバー側のデバッガを起動・終了できるブックマークレット*を作成できます。 ※ブックマークから起動し、ブラウザで処理を行うプログラム

ドラッグ&ドロップでブックマークバーへ追加しましょう。

ブックマークレットの利用方法
  1. PHPStormでブレークポイントを設定
  2. PHPStormでデバッガを起動
  3. Xdebugからの接続を開始
  4. デバッグするページをブラウザで表示
  5. デバッガ用ブックマークレットへアクセスし、起動
  6. デバッグしたいページを通常のWebブラウザでリロード
  7. デバッグ開始


f:id:hrt0kmt:20150601181025p:plain

xdebug.profiler_output_dir = "C:\xampp\tmp"で設定したフォルダにログが吐かれます。

f:id:hrt0kmt:20150601180613p:plain



4. リモートデバッガの設定

Menu > Run > Debug > PHP Remote Debug > +

f:id:hrt0kmt:20150607220513p:plain



5. デバッグ用クライアントを複数指定する場合の設定

php.iniの設定で、xdebug.remote_connect_back = 1が設定されていると、任意のIPアドレスから接続可能となります。

xdebug.remote_hostの設定は無効となるため、IPアドレスを指定してフィルターにかける方法は効果がないため、別の方法でアクセス制限をかけねばなりません。


5-1. DBGpプロキシーのインストール

DBGp ProxyとはXdebugの機能で、プロキシーを経由し複数のクライアントから接続できます。リモートデバッグを開始する前に、複数デバッグ用クライアントからIDEキーを用いて、プロキシーを登録する必要があります。

ActiveStateが公開しているPython Remote Debugginを(開発サーバーのOSに合わせて)インストールします。

こちらからもダウンロード可能

// アーカイブの展開
$ tar -xvzf Komodo-PythonRemoteDebugging-5.1.4-30485-linux-x86.tar.gz
$ cd Komodo-PythonRemoteDebugging-5.1.4-30485-linux-x86
$ cd bin
// DBGp Proxyの実行
$ ./pydbgpproxy -i [開発サーバーのIPAddress]:9001 -d 127.0.0.1:9000
INFO: dbgp.proxy: starting proxy listeners.  appid: 10826
INFO: dbgp.proxy:     dbgp listener on 127.0.0.1:9000
INFO: dbgp.proxy:     IDE listener on  [開発サーバーのIPAddress]:9001


5-2. PHPStorm側のDBGpプロキシーの設定

Language & Framewoks > PHP > Debug > DBGp proxy - IDE key *** - Host ホスト先のアドレス - Port 9001

f:id:hrt0kmt:20150607234149p:plain



参照

Installing and Configuring XAMPP with PhpStorm IDE - PhpStorm - Confluence

PhpStorm + Xdebugを使ったPHPのデバック方法(XAMPP for Mac) : PHP FindxFine | Web制作に関するメモ

[PHP][PhpStorm][remote-debug]の設定手順 » rt:anote

PhpStorm で PHPスクリプトの実行を解析する(Xdebugのプロファイラの結果を表示する) | バシャログ。

Xdebugをセットアップする -でじうぃき