seri::diary

日常

PHP5.3におけるxdebugの正しい設定について

NetBeansデバッグをするためにxdebugを入れてみた。
ググってみたら設定方法についていろんな情報が飛び交っていたので
自分が上手く入った方法をまとめておく。

xdebugダウンロード

以下リンクから自分のPHPのバージョンに合ったものをDL
Xdebug: Download

私の場合は

  • PHP5.3.5
  • 32bit
  • vc6
  • thread safe

なのでWindows binariesの中から『PHP 5.3 VC6 TS (32 bit)』版をDL。

dllをextフォルダに入れる

私の場合は以下のようにdllを入れた。
D:\php\extphp_xdebug-2.1.1-5.3-vc6.dll

php.iniに以下のように追記

ここがキモで最も情報が錯綜している箇所である。
以下をphp.ini追記することで動いた。

zend_extension="D:\php\ext\php_xdebug-2.1.1-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.profiler_output_dir="D:\php\tmp"

ここでハマりやすいのがzend_extensionのパス設定である。

公式のdocには『extension=』にdllのパスを記述するように書いてあるらしいが、
これでも一応動作はしてもNetBeansでのデバッグしようとすると動かない。

『zend_extension=』にdllのパスをセットするのが一番間違いがないようだ。
他のプロパティについてはセオリー通り。

※2011/12/09補足
PHPのバージョンによってextentionを指定するためのプロパティ名が異なるらしい。

PHP5.3 = zend_extension
PHP5.2 = zend_extension_ts

となるらしいので注意

参考

Apacheを再起動

当たり前だがphp.iniをいじったのでApacheを再起動して設定を反映させる。
phpinfo();を実行し、xdebugの項目が増えていればオッケーである。

NetBeansを起動

ここまでやれば後はNetBeans上で通常通りデバッグセッションを開始するだけである。
ブレークポイントが貼ってあればJavaやVisualStudioのデバッガようにきちんと止まることが確認できるはず。

デバッガはEclipse + JavaやVisualStudio + VB/C#.NETでしか使ったことがなかったのだが
phpの場合はIDEを入れるだけでなくプラスファルファの手順が必要なのである。

そこが若干厄介というか、言語仕様以外の周りの環境含めてまだまだ発展途上というか
「これから」の言語だなぁと感じる。
もっとも専用IDEもxdebugすら無い時代のphperの先人の方々はもっと苦労されていたのだろうが(^_^;)