WindowsでApache2.0でPHP5.2が動作して、Eclipse GanymedeにPDTが組み込まれているという環境で、ZendDebbuggerを組み込む方法についてです。Webサーバーとデバッグするマシンは同じである必要はありません。
ApacheにZendDebuggerを組み込む
- ZendDebuggerの入手
- http://downloads.zend.com/pdt/server-debugger/にいく。ZendDebugger-5.2.xx-cygwin_nt-i386.zipをダウンロードする(基本的には最新版でよいはず)。
- インストール
-
Zipを展開すると?_?_x_compのようなフォルダがあるが、最初の2つの数がPHPのバージョンを意味しているので5_2_x_compか5_2_x_nts_compのいずれかのフォルダにあるDLLをどこかにコピーする(展開されたフォルダーごとどこかにおいてもよい)。
5_2_x_compと5_2_x_nts_compの違いは、スレッドセーフか非スレッドセーフであり、どちらを組み込むかは、PHPのビルドによって異なる。phpinfo();で出力された中に「Thread Safety」という項目が「enable」で「Debug Build」が「no」であれば、スレッドセーフであり、いずれかがそうでなければ非スレッドセーフということになる。PHPをバイナリでインストールした場合には、スレッドセーフになっているはず。 - php.iniの設定
-
以下の設定をphp.iniに追加する。
zend_extension_ts=<コピーしたDLLのパス>ZendDebugger.dll zend_debugger.allow_hosts=<アクセスを許可するIPアドレス> zend_debugger.expose_remotely=always
もし非スレッドセーフなDLLを組み込むときは、「zend_extension_ts」は「zend_extension」となる。
IPアドレスの設定は、複数ある場合カンマ「,」で区切る。 - dummy.phpのコピー
- 展開されたフォルダにあるdummy.phpをApacheのドキュメントルートにコピーする。このファイルは、PDTのデバッグの設定で「TestDebugger」で接続テストをするときにアクセスする。本質的には必須ではない。
設定完了後にApacheを開始または再起動し、エラーログをチェックする。
Eclipseの設定
- Webサーバーの設定
-
Eclipseの設定ダイアログ(Preferencesで表示される)の「PHP」の「PHP Servers」の項目を表示して、デバッグのターゲットとなるWebサーバーを指定する。
または、「PHP」か「PHP Debug」のパースペクティブを表示にあるデバッグのダイアログ(Debug Configurationで表示される)を表示して、「PHP Server」をいう項目を変更または追加する(デフォルトはlocalhostになっている)。 - 接続の確認
- 上記のデバッグのダイアログで「Test Debugger」というボタンを押すと接続確認ができる。ただし、dummy.phpをドキュメントルートにコピーしておかないとテストはできない。
- デバッグファイルの設定
-
デバッグのダイアログで、対象となるファイルを指定する。ここでは、ローカルなファイルを指定するので、普通はプロジェクトのフォルダからの相対パスとなる。
ドキュメントルートからのパスの関係がプロジェクトのパスと一致していれば、URLの設定は「Auto Generate」でデバッグできることになる。すなわちこれは、Apacheのドキュメントルート上にPHPのプロジェクトを作成したという状態を意味している。 - デバッグの確認
-
あとは、デバッグのダイアログで「Debug」ボタン(Runの設定の場合「Run」ボタン)を押すとApache上で実行される。
このとき、表示をEclipse上ではなく別のブラウザ上に表示することができる。設定するには、PHPのパースペクティブで、「Window」のメニューで「Web Browser」で変更するか、設定ダイアログの「General」の「Web Browser」で変更することができる。