前回の、PHP環境構築(1)では、
もっとも重要である、統合開発環境(IDE)のインストールと、IDEを利用しやすく
するために、IDEの日本語化というところまでを説明しました。
統合開発環境には無料で高機能そしてもちろんデファクトスタンダードな開発環境
である、eclipse"PDT(PHP Development Toolkit)"を選択しています。
また、日本語化には、Pleiades(プレアデス)プラグインを使用しました。
※どちらも簡単にセットアップできますのでまだのかたは、前回を参照してください。
さて、今回はセットアップした開発環境で、PHPのデバッグができるようにします。
通常、ビジネスでのシステムの開発では、システム設計→開発→テストという工程
で進められますが、重要になるのが開発環境でのデバッグの機能です。
プログラムの開発中、テスト実施中、不具合が発生した場合の調査など、
プログラムの実行中のある時点での、変数の内容の参照や、どのような順番で
プログラムが実行されているか、分岐命令でどういう動作をしたかなどを知ることは
とても重要です。
そのために、ブログラムに"ブレークポイント"という一時停止できるポイントを設定したり、
ブレークポイントから一行一行プログラムを実行していく、"ステップ実行"などの機能が
一般的な開発環境には備わっています。※Visual Studio, Delphi、Eclipse(Java)など
今回は、PDTというPHPの開発環境でデバッグをおこなうにはどうすれば良いかを説明
していきます(残念ながらデフォルトでPDTにはデバッグ環境が含まれていないので)
まず、PHPでデバッグをおこなう最も有力な手段としては、次の2つが考えられます。
- "ZendDebugger"のデバッグ機能を利用する
- "Xdebug"のデバッグ機能を利用する
どちらも安定性、速度面など、性能的には大差はないようです。機能的にいくと、
ZendDebuggerは、mod_rewrite環境で正常にデバッグできない。(a)
Xdebugは、変数の内容表示で日本語が表示されない。(b)
というところが欠点に挙げられています。
CakePHPをフレームワークとして利用しようとした場合、両方とも深刻な問題です。
⇒念のため、ZendDebuggerも、Xdebugも両方とも使用してみたところ、私の環境で
(a)については現象は発生しませんでした。きちんとブレークポイントでも静止しますし、
CakePHPフレームワーク内ののソースでもデバッグできています(今のところ)
また、Xdebugについては、(b)の問題があるのと、細々とした点で、使いにくい点が
あったので、当面は、ZendDebuggerを利用しようと思います。
(a)の問題については現在のバージョンでは既に解決されていたのかも...
前置きが長くなったのですが、以下、簡単に設定手順を説明します。
(基本的には単純です)
1.ZendDebugger
a)インストール済のPDTに、モジュールのみ設定する方法を説明しますが、
ZendDebugger+PDTのAll in Oneモジュールも提供されています。
PDT+PHP+ZendDebugger。2009年6月20日のWindows環境での最新版は、
"pdt-2.0.0GA_debugger-5.2.15.v20081217-all-in-one-win32.zip"です。
個別に、ZendDebuggerモジュールを取得する場合は、
ZendDebuggerのダウンロードサイトより、モジュールをダウンロードします。
Windows環境での最新版は、"ZendDebugger-5.2.15-cygwin_nt-i386.zip"です。
b)それぞれのモジュールの中に、"ZendDebugger.dll"というモジュールがあるので、
任意の場所に保管します。一般的には、PHP本体、extフォルダの中でしょうか...
c)そして、php.iniの設定に次を追加します。
[Zend]
zend_extension_ts="C:\php\ext\ZendDebugger.dll"
zend_debugger.allow_hosts=127.0.0.1
※zend_extention_tsの"_ts"を付けるかどうかはPHPの環境で変わります。
ZendDebugger.dllのパスの設定は、自身の環境に合わせてください。
d)ここで、Webサーバ(Apache)を再起動しておきます。必要に応じて、
phpinfo()で"ZendDebugger"の項目が表示されるか確認しておいてください。
e)eclipsePDTを起動して、デバッガーの設定をします。
メニューの[ウィンドウ]-[設定]から設定画面を開きます。
PHP->デバッグの項目を設定します。
・"PHPデバッガー"を、"Zendデバッガー"に設定します。
・必要に応じて"サーバー"の項目を変更します。
・"PHP実行ファイル"を自身の環境に合わせます。
php-cgi.exeの場所と、php.iniの場所と、デバッガーのタイプを指定します。
f)デバッグしたいファイルを開き、必要に応じてブレークポイントを設定します。
ワークスペースの該当のファイルを右クリックし、"デバッグ"メニューまたは、
ツールメニューのデバッグアイコンをクリックすると、デバッグが始まります。
g)設定等に問題がなければ、該当のファイルのブレークポイントで実行が停止
されるはずです。
1.Xdebug
最後に、Xdebugの設定も説明しておきます。
手順は、基本的にZendDebuggerと同じです。
a)まずは、モジュールをXdebugのサイトよりダウンロードします。
PHPのバージョンに合わせてダウンロードします。2009年6月20日現在の
最新バージョンは、2.0.4です。私の環境に合わせて、 "5.2 VC6"を
ダウンロードしました。
b)私の場合、"php_xdebug-2.0.4-5.2.8.dll"というモジュールがダウンロードされた
ので任意の場所に保管します。一般的には、PHP本体、extフォルダの中でしょうか...
c)そして、php.iniの設定に次を追加します。
[xdebug]
zend_extension_ts="C:\php\ext\php_xdebug-2.0.4-5.2.8.dll"
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_log="C:\php\logs\xdebug.log"
xdebug.manual_url = http://jp2.php.net
xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.dump.POST = *
※zend_extention_tsの"_ts"を付けるかどうかはPHPの環境で変わります。
dllのパスの設定は、自身の環境に合わせてください。
d)ここで、Webサーバ(Apache)を再起動しておきます。必要に応じて、
phpinfo()で"xdebug"の項目が表示されるか確認しておいてください。
e)後の手順は、ZendDebuggerの時と同じです。デバッガーの種類に"xdebug"
を選択してください。xdebugの場合は、一度デバッグの実行後、デバッグ終了を
するまでデバッグのセッションが続いているので新たにデバッグを起動できません。
また、デバッグ終了後にダミーのブラウザが必ず立ち上がるのも少しうっとおしい
です。
※なお、php.ini に両方のデバッガーの設定を書いた場合に、動作しなくなる場合が
ありましたので、php.iniには、どちらか一方のみ記述するか、片方をコメントアウト
してください。
ここまでの設定で、開発環境の構築で大きな部分は達成できていると思います。
次回は、実際に、cakePHPのプロジェクトを作成し、構築した開発環境で、開発を
進める準備をしてみようと思います。
