PHP のデバッグ XDebug 編

Posted by muchag | Eclipse,PHP | 2011-05-14 (土) 1:48:24

Eclipse PDT における PHP のデバッグは

  • ZendDebugger
  • XDebug

のみの対応らしい。

ZendDebugger は、mod_rewrite に対応していないらしく
XDebug を薦める声が大きい気がする。

というわけで、今回は XDebug を採用することにした。

【環境】
[Eclipse] Pleiades All in One 3.6.2 PHP
[XAMPP] 1.7.3
※ Pleiades 同梱の XAMPP ではなく、元々利用していた独立 XAMP
XDebug の導入

XDebug の導入
 

プロジェクト固有の設定

Eclipse はとても親切設計で
1つの項目を設定するのに幾通りものアプローチがある。

なので、「プロジェクト固有の設定」にする手法は
別にもあるかもしれない。

でも、忘れないうちにメモ。
 
プロジェクトのコンテキストメニューから [プロパティー] か
プロジェクトを選択した状態で
[プロジェクト]-[プロパティー] から

① 左ペインで「PHP デバッグ」を選択。

② 上部の「プロジェクト固有の設定を可能にする」にチェック。

後は必要事項を設定して「OK]

※ちなみにこの設定をしなくても、望み通りにデバッグをすることができた。
 

デバッグの構成

[実行]-[デバッグの構成] から
① 左ペイン左上の「新規の起動構成」アイコンをクリック。

②「名前」(任意)を入力。

③「サーバー・デバッガー」で「XDebug」を選択。

 
④ ノーマルで使用する場合は何もしない。
VirtualHost 等を利用する場合は「新規」をクリック。

「名前」(任意)を入力。

インストール
CakePHP のプロジェクトを Eclipse に関連付ける
等で設定した VirtualHost を入力。

今回実際に設定して成功した VirtualHost 設定。

I:\xampp\apache\conf\httpd.conf
  1. # Configuration for "test2" of a PHP Project 2011-05-12 add
  2. # Be sure to only have this line once in your configuration
  3. NameVirtualHost 127.0.0.1:8080
  4.  
  5. # This is the configuration for your project
  6. Listen 127.0.0.1:8080
  7.  
  8. <VirtualHost 127.0.0.1:8080>
  9.     DocumentRoot "J:\Eclipse_PDT\cakeprojects\benricho\test2"
  10.     DirectoryIndex index.php
  11.     <Directory "J:\Eclipse_PDT\cakeprojects\benricho\test2">
  12.         AllowOverride All
  13.         Deny from All
  14.         Allow from 127.0.0.1
  15.     </Directory>
  16.  
  17.     Alias /test2 "J:\Eclipse_PDT\cakeprojects\benricho\test2"
  18.     <Directory "J:\Eclipse_PDT\cakeprojects\benricho\test2">
  19.         AllowOverride All
  20.         Deny from All
  21.         Allow from 127.0.0.1
  22.     </Directory>
  23. </VirtualHost>

17~22行目の Alias の設定がないと 404 エラー(Not found)になった。
 
⑤「構成」をクリックすると ④ で追加した
「PHP サーバー」情報が表示される。

 
そこで「パス・マッピング」タブを選択し
「追加」をクリック。

 
「サーバー上のパス」
当該 PHP プロジェクトまでのフルパスを記入。

「ワークスペースのパス」
ワークスペースからプロジェクトへのパスを記入。
「参照」から入れてもいいが、上のパスの最後をコピペするのが速い。

そして「OK」

 
「サーバー上のパス」
「ローカル・パス」
が追加されているのを確認して「OK」

※「パス・マッピング」について
後でこの設定を「除去」してみたけどデバッグできたので
この設定はしなくてもOKかも。

 
⑥ ファイルは「参照」から
デバッグしたいファイル
(但し、プロジェクトルートのファイルでないとだめらしい)
を選択して「OK」

 
(左図は、この項目先頭のものと同じ)
⑦ ブレークポイントの設定はお好みで。
 
⑧ URL に関して、「自動生成」にチェックをすると、一見おかしい。
http://localhost:8080/test2/index.php
左図の自動生成 URL を繋げると上記の如くなるが
VirtualHost の設定で test2 フォルダを localhost:8080 としているので
これだと test2/test2/index.php になっている気がする・・・が、これで大丈夫。
下手にいじるほうが却ってアウト。

最後に「適用」すれば「デバッグの構成」は完成。
 

デバッグの実行
開始

[実行]-[デバッグの構成] から
① 左ペインで先ほど登録した起動構成を選択。

② 「デバッグ」

また一旦デバッグをしてしまえば、Eclipse に登録される。

ツールバーの虫から直前の構成でデバッグできる他、
右の▼をクリックすれば、デバッグ構成の一覧が出てくるので
選んでデバッグを開始できる。

 

ブラウザの選択

デバッグ結果というよりもプログラムの実行結果を表示するブラウザを選択できる。

[ウィンドウ]-[設定] から
左ペインの [一般]-[Web ブラウザー] を選択。

後は、内部ブラウザ(Eclipse 内)にするか外部ブラウザ(一般)にするか自由に設定。

 

終了

デバッグをしていると左図のようなダイアログに遭遇する。

「Web Launch Already Running(既にデバッグ中)」とのことなので
先に前回のデバッグを終了させなければならない。

 
[実行]-[終了] か
Ctrl + F2 か

 
「デバッグ」ビューの赤い四角ボタン
で終了する。

ちなみに「内部 Web ブラウザ」ビューの赤い四角ボタンではない。
これをクリックしても何も反応しない。
紛らわしい・・・。

 

パースペクティブ

Eclipse には、「PHP デバッグ」パースペクティブが用意されている。
 
[ウィンドウ]-[パースペクティブを開く]-[PHP デバッグ] を選択。

 
もし、一覧に [PHP デバッグ] がない場合は
[ウィンドウ]-[パースペクティブを開く]-[その他] から
出てくるダイアログで「PHP デバッグ」を選択して「OK」。

 
これで「PHP デバッグ」パースペクティブが表示される。

画面右上にパースペクティブ切り替えコーナーがあり
そこにも「PHP デバッグ」と表示されている。

 
って、わざわざこんなことをしなくても
1回デバッグしてみれば
左図のようなダイアログが出て
自然の流れで「PHP デバッグ」パースペクティブを開けるのは内緒!

 

チェックリスト

PHP のデバッグにおいて詰まったところを列挙。順不同。

  1. Object not found! – Error 404
    1. VirtualHost にて Alias の設定をする
  2. ブレークポイントで止まらない
    1. デバッグ対象 PHP ファイルは
      VirtualHost にて設定した
      DocumentRoot になければならない
Eclipse,PHP | 2011-05-14 (土) 1:48:24 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment