今回の目的は、サーバ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は以下のサイトより入手。
ちなみに俺は
を選んだ。
PDTはインストールは不要。解答して任意のフォルダで実行するのみ。
ここらへんを詳しく知りたければ他のECRIPS系のサイトを参照のこと。
重要なポイントは以下の点。
- 「ウィンドウ >> 設定 >> PHP >> PHPサーバ」でサーバ情報を入力すること。
- 「ウィンドウ >> 設定 >> PHP >> PHP実行可能ファイル」でphp.exeとphp.iniを設定すること(※ネットワークドライブ上でもOK)。
- 「ウィンドウ >> 設定 >> PHP >> デバッグ」で上記二つの設定を反映させること。
XDebug の入手とインストール
XDebug は以下のサイトより入手する。
俺は、
を選択。
ちなみに、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がインストールされたら以下のような箇所が表示される。
PDTでデバッグテスト
もうあとは説明する必要もないくらいだ。
プロジェクトを作成 >> 適当にPHPコードを書いて >> 当該行頭ダブルクリックでブレークポイントを設定して >> デバッグ >> F5でステップ実行
という感じである。
できない?
しらんがな (´・ω・`)y-~~
なぜ XDebug か?
世の中にはZend Debuggerなる同類のものもあるらしいのだが、こちらはPHP 5.3に対応しておらず、今後も対応する予定がないのだそうだ。したがって、XDebugを使用した。
もうひとつ、DBGなるものもあるらしいが、XDebugでできちゃったからもういいや~(´・ω・`)y-~~