XDebugインストール&Eclipse(PDT)でPHPリモートデバッグを行う方法

今回の目的は、サーバOSでPHPコードを実行して、クライアントOS側でステップ実行等のデバッグ作業を行うところにある。

俺の開発環境は以下の通り。

  • Server OS: Windws XP Pro SP3
  • Apatch: 2.2.17.0
  • PHP: Version 5.3.4
  • MySQL: 5.5.10
  • Client OS: Windows 7 Home

ちなみに、サーバOSがWindwsサーバであってもXDebugはちゃんと動いてくれた。あたりまえか・・・

なお以下の作業を行う前提条件として、サーバOSには最低でも apache + PHP はインストール済みであることとする。

PDT(PHP Development Tools)の入手とインストール

PDTは以下のサイトより入手。

Pleiades All in One 日本語ディストリビューション

http://mergedoc.sourceforge.jp/index.html

ちなみに俺は

Eclipse 3.7.0 Indigo Windows 32bit ベース / Pleiades All in One 3.7.0.20110623 >> PHP >> JREなし

を選んだ。

PDTはインストールは不要。解答して任意のフォルダで実行するのみ。

ここらへんを詳しく知りたければ他のECRIPS系のサイトを参照のこと。

重要なポイントは以下の点。

  • 「ウィンドウ >> 設定 >> PHP >> PHPサーバ」でサーバ情報を入力すること。
  • 「ウィンドウ >> 設定 >> PHP >> PHP実行可能ファイル」でphp.exeとphp.iniを設定すること(※ネットワークドライブ上でもOK)。
  • 「ウィンドウ >> 設定 >> PHP >> デバッグ」で上記二つの設定を反映させること。

XDebug の入手とインストール

XDebug は以下のサイトより入手する。

俺は、

PHP 5.3 VC6 TS (32 bit)

を選択。

ちなみに、VC6 は Visual Studio 6系 でコンパイルされたもので、VC9 は Visual Studio 2008 でコンパイルされたものを指す。今回はサーバOSがそんなに新しいわけではないので、VC6を選択。おそらく、Windows Server 2008 とかお使いの場合には VC9 を使ったほうがよいのではなかろうか。

また、TSはスレッドセーフの略でマルチスレッド対応か否か、ということ。今回は・・・・べつにどっちでもいいんじゃね?開発環境だし、うごけばいいや・・・・ということで、スレッドセーフ版を選択した。

これらはお使いのOSやアナタのシュミに合わせて選択してほしい。

なお、LinuxへのXDebugインストールについては、他に腐るほど解説サイトが見つかったので、そちらを参考に。

このXDebugだが、DLL単体のソフトウェアなので、PHPにこのDLLを読み込ませるだけ。ということでphp.iniを編集する。

以下の行をphp.iniに追加する。

[Debugger]
zend_extension = "C:\php\Debugger\php_xdebug-2.1.1-5.3-vc6.dll"
xdebug.remote_enable=1
xdebug.remote_host = "192.168.21.1"
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = "req"
xdebug.remote_log = "C:\php\xdebug_remote_log"
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "C:\php\xdebug_output"

各パスのあたりはお使いの環境に合わせて適宜修正のこと。

なんか、なくてもよい行もある気がするが、そこら辺は自分でしらべてくれたまへ。とりあえずこれで動くはず。

お約束通り、php.iniを編集したらapacheを再起動のこと。

正しくXDebugがインストールされたら以下のような箇所が表示される。

xdebugインストール成功_01

xdebugインストール成功_02

PDTでデバッグテスト

もうあとは説明する必要もないくらいだ。

プロジェクトを作成 >> 適当にPHPコードを書いて >> 当該行頭ダブルクリックでブレークポイントを設定して >> デバッグ >> F5でステップ実行

という感じである。

できない?

しらんがな (´・ω・`)y-~~

なぜ XDebug か?

世の中にはZend Debuggerなる同類のものもあるらしいのだが、こちらはPHP 5.3に対応しておらず、今後も対応する予定がないのだそうだ。したがって、XDebugを使用した。

もうひとつ、DBGなるものもあるらしいが、XDebugでできちゃったからもういいや~(´・ω・`)y-~~

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です