Eclipse+PHP+ZendFramework+XAMPPのデバッグ環境構築

1.概要
Eclipse+PHP+ZendFramewok+XAMPPのデバッグ環境の構築を目的とする
前提として、CLIでのデバッグ設定ではなく、Webサーバを通してのデバッグとなる
CLIデバッグはZendFrameworkの場合はどうやるか知らない
ただ、Webサーバを通すのが一番簡単だと思う、たぶん
2.環境
PC:Windows7(32bit)
3.インストールとセットアップ

  • 以下のURLよりPHP向けのFull All in Oneをダウンロード


http://mergedoc.sourceforge.jp/index.html#/pleiades_distros3.7.html
解凍して適当なフォルダ(C:\pleiades-e3.7-php-jre_20120225 など)へ配置

  • まずはZenfFrameworkのインストール

http://framework.zend.com/download/latest から必要なソフトをダウンロード
通常は Minimal で問題なし。(違いはよく知らない)


Windows 版のものを入手して、
C:\pleiades-e3.7-php-jre_20120225\xampp\php直下に解凍
C:\pleiades-e3.7-php-jre_20120225\xampp\php\ZendFramework-1.11.11-minimal
みたいな感じ

  • php.iniの設定

XDebugディレクティブのコメントアウトを外す


[Xdebug] 以下のコメントアウト
;xdebug.remote_enable = 0
みたいになっているのでこういったものをすべて外す。
それぞれ何を意味しているかは知りたい人は調べるかんじ。
ちなみに
xdebug.remote_enable = 1
にしておかないと、デバッグ時にブレークポイントで止まらなくなるので注意
それ以外は特筆すべき点はなし。(PHPの正しい設定はまた別途記載するかも)
ZendFrameworkのインクルードパスを設定

include_path = ".;C:\pleiades-e3.7-php-jre_20120225\xampp\php\PEAR;C:\pleiades-e3.7-php-jre_20120225\xampp\php\ZendFramework-1.11.11-minimal\library"
※C:\pleiades-e3.7-php-jre_20120225\xampp\php\ZendFramework-1.11.11-minimal\library
を追加している

  • ZendFrameworkのプロジェクト作成

zf.bat を使えるようにするため、PCの環境変数 Path へ以下を追加


C:\pleiades-e3.7-php-jre_20120225\xampp\php\ZendFramework-1.11.11-minimal\bin;C:\pleiades-e3.7-php-jre_20120225\xampp\php

コマンドターミナルからプロジェクトを作成したいパスへ移動
自分の場合は
C:\pleiades-e3.7-php-jre_20120225\xampp
配下に projects を作成した状態で、
cd C:\pleiades-e3.7-php-jre_20120225\xampp\projects へ移動
この状態で
zf create project
zf> development
作成
developmentの中を見ると色々作られている

Apache: xampp\apache\conf\extra\httpd-vhosts.conf
xampp\apache\conf\httpd-hosts.conf からvhostsのincludeはデフォルトで
有効になっているけど念のため確認すること。


さっき作ったパスに合わせてDocumentRootを設定

ServerName localhost
DocumentRoot "C:/pleiades-e3.7-php-jre_20120225/xampp/projects/development/public"
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" combined

Options All
AllowOverride All
Order deny,allow
Deny from all
Allow from all


  • 動作確認

apacheをXamppのコントロールパネルでstop->start
http://localhost/
でZendFrameworkのページが見えるはず
見えない場合はどこか間違えているので見直すこと(手順が間違っていたらごめんなさい)

Eclipseを起動する


C:\pleiades-e3.7-php-jre_20120225\eclipse\eclipse.exe
を実行すればOK
次はプロジェクトの設定

左側に表示されているPHPエクスプローラで右クリック
[新規]->[PHP プロジェクト]を選択
プロジェクト名は任意なので好きな名前を設定
zfコマンドで作成したプロジェクト名と合わせると分かりやすい(development)
既存ロケーションにプロジェクトを作成
で、さっき作った development を指定する
んで完了をクリック
次はデバッグの設定

上部の[ウィンドウ]->[パースペクティブを開く]->[デバッグ]とたどる
虫みたいなマークの右側をクリックして、デバッグの構成を選択
PHPウェブアプリケーション内で右クリックし[新規]を選択
右側にページが出るので、
サーバデバッガ->xdebug
ファイル->テストしたいPHPファイル(たとえばIndexController.phpなどを選択す)
※この辺りはZendの仕組みを知っている必要があるので、ZendFramework自体を勉強してください。
んで、URLは自動生成だと直接指定したファイルへリクエストを投げてしまうので、
自動生成を外して / などにする。
※Webサーバを通してIndexController.php が呼び出されるパスに設定する
んで、適用ボタンをクリック
そのままデバッグボタンを押してもOK
そして、何ができるかというとステップ実行、ブレークポイントの設定、
実行中の変数確認・変更などができる。
ブレークポイントはテストしたいソースを開いて、行数表示の左側を
ダブルクリックすると、マークがつくのでそれでOK
その状態で、虫マークなどで設定したデバッグの構成を使ってテストを走らせることが可能

  • 最後に

ローカル環境外での、他サーバのデバッグをしてみようと試みたが以下の条件に
当てはまらない場合ははできないかも。


デバッグしたいサーバから開発するPCへ通信可能であること。
ようは、自宅PCのGIPが固定で持てないプロバイダーであったり、NAT、FW、LBなど
Network機器の設定でサーバから開発機へ通信できない場合、
dbpgによる認証がサーバから要求もとへ取れないとダメみたい、自信なし。
以下のURLのGIFアニメや書いてあることを読む限り、
サーバからPCへdbpgによる認証要求を投げているように見えるので
たぶんそれが出来ないとブレークポイントで止めることが出来ない
http://www.xdebug.org/docs/remote#communication

Xdebug以外のものを使えばいいのかもしれないけどよくわからない(調べてない)
ので誰か教えてください。