PHP/EclipseとXdebugを使ってのPHPのデバッグ環境構築

PHP/EclipseとXdebugを使ってのPHPのデバッグ環境構築

バージョンと製造年月日

  • 2011-08-19
  • WindowsXP SP3
  • Eclipse 3.7(Pleiades の All in one版)
  • PHP 5.3(XAMPP1.7.4でインストール済)
  • Xdebug 2.1.2

Xdebugの動作

  • 開発者がデバッグ対象のPHPを動作させるURLにデバッグ用のパラメータを付与してアクセス
  • ↑と同時に開発者マシンの9000番ポートで待受(※この待受は大体の場合Eclipseのプラグインがやっている)
  • アプリのサーバのApacheがリクエストを受け取る
  • Apacheが該当のPHPコードを呼び出して駆動
  • XdebugがPHP本体が駆動する前にデバッグ用のパラメータを感知
  • 予め設定(php.ini)されているURLへデバッグ情報を横流し(※このURLは大体の場合開発機の9000番ポートになっている)
  • 該当のPHPコードを呼び出して駆動させる。
  • Xdebugと開発者マシン上のXdebugクライアントがやりとりしながらデバッグを進める

のように動作する。

PHP側へのXdebugのインストール

まずダウンロードから。Xdebug: Downloads←ここからダウンロード。

今回はWindowsでApacheなのでWindows binaryの

Xdebug 2.1.2 PHP 5.3 VC6 TS (32 bit)

を選んだ。スレッドセーフを選んだのは雰囲気w ファイル名的にもスレッドセーフ版が普通みたいで通常版はntsとついている。

生のdllファイルがダウンロードできるので

D:\xampp\php\ext

ここらへんにぶっこんでおいて。あとは設定を書く。

xampp付属のphp.iniにはもうすでにいろいろかいてあるんでこれを有効にするだけでいいっぽい。とりあえずこんだけかいておいた。

zend_extension = "D:\xampp\php\ext\php_xdebug-2.1.2-5.3-vc6.dll"
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_log="D:\php\logs\xdebug.log"
xdebug.manual_url = http://jp2.php.net
xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.dump.POST = *

「zend_extension」を「zend_extension_ts」と指定するドキュメントもあったけどそれでやったら動かなかった。

保存して、Apache再起動。phpinfoからXdebugが有効になってることを確認。

Eclipseのインストール

Pleiadesからall in oneのEclipseを落とす。今回は奮発して3.7を使用。日本語化 Eclipse 3.7 Indigo インディゴのPHP版を使う。

解凍して適当なディレクトリに配置。とりあえず一発起動してみる。起動したOK。ワークスペースを聞かれるが今回はデフォルトにしておく。

動作確認のため既存のソースの取り込み

今回は既存のデバッグしたいソース群がもうすでにあって、それを取り込むという方法をやる。

新規PHPプロジェクト で既存のファイル群を指定 プロジェクトを作成できた

Eclipse側からデバッグ

PleiadesのEclipseはPDTとかデバッガーとかが一式もう組み込まれている。

Eclipseの設定からPHP→デバッグと辿って、Xdebugの待受の設定とかがphp.iniでやったものと同じか確かめる。普通ならばいじらなくてOK

通常はデバッグ中はEclipse内蔵のブラウザが使われるが、好みじゃないので、これまたEclipseの設定から一般→Webブラウザと辿って外部ブラウザの好みのものに変えておく。

実行からデバッグ構成を選ぶ。サーバーのタブでサーバデバッガーをXdebugに

PHPサーバーを新規に設定する。ベースのURLを指定する。PHPの開発だとhostsを書き換えて名前ベースのvirtualhostにしてる場合があるからそれならそれに合わせて書き換える。

ファイルとURLを書く部分があるが、デバッグしたい位置とURLが対応することなんてまずない。 ファイルは適当にどれでもいいの選んでおいて、URLは自動生成を外してデバッグを開始したときに起動したいURLを選んでおく

「最初の行でブレーク」にチェック デバッグボタンをクリック。

そうすると先ほど指定したブラウザでURLが開いてアクセスしにいく、そしてPHPが動く前になってEclipseが最初の行に達したということでデバッグのパースペクティブに切り替わる。

これでステップ実行しながら処理が追えるようになったわけだ

タグ

php/setup_php_dev_env_using_eclipse_and_xdebug.txt · 最終更新: 2011-08-19 18:16 by ore