2008年2月12日

WindowsクライアントからLinuxサーバーのPHPウェブページをリモートデバッグする設定のメモです。

Windows(XP SP2)には、EclipseのPHP開発用プラグイン「PDT」をインストールします。
「PDT」は、Xdebugクライアントになります。

Xdebugは、Xdebugインストールメモのようにインストール済みです。

PDTインストール

PDTは、PDT Projectから「PDT All-in-One」パッケージをダウンロードしました。
(ダウンロードしたファイルは、pdt-all-in-one-S20071213_M1-win32.zipです。)

インストールは、zipファイルを適当なフォルダに解凍するだけでOKのようです。
(JVM(Java virtual machine)は必要)

サーバーの設定

デバッグするファイルは、次のようなパスにあるものとします。

ドキュメントルート /var/www/html
デバッグ対象ファイル /var/www/html/rd/index.php
デバッグ対象URL http://test.localdomain/rd/index.php

/var/www/html/rd/index.phpは、次のようなものにします。

PHP:
  1. <?php
  2. test();
  3.  
  4. function test()
  5. {
  6.   $now = Date('Y-m-d H:i:s');
  7.   echo $now;
  8. }
  9. ?>

.htaccessにXdebugの設定

ドキュメントルートの.htaccessには、次のような設定を行います。

php_flag xdebug.remote_enable On
php_value xdebug.remote_handler dbgp
php_value xdebug.remote_host 192.168.0.XX

この例では、xdebug.remote_hostには、WindowsクライアントのIPを指定しています。

PDTプロジェクト作成

eclipse.exeを起動します。
初めてeclipseを起動するときには、Workspaceの作成を聞かれると思います。

プロジェクトの新規作成

1.メニューの[File]->[New]->[Project]をクリック。

2.[PHP Project]を選択して、[Next]ボタンをクリック。

3.Project Nameを適当に入力して、[Finish]ボタンをクリック。
この例では、[Use efault]のチェックを外して、「H:\test」を指定しています。
PDT プロジェクト新規作成

4.サーバーのファイルをWindowsクライアントにコピー。

サーバーのファイルとローカルファイルは、次のような対応にしました。

サーバーのファイルパス /var/www/html/rd/index.php
ローカルのファイルパス H:\DocumentRoot\rd\index.php

5.ローカルファイルをプロジェクトに追加。
プロジェクト名を右クリックして表示されるメニューの[Import]をクリックして、ローカルのファイルをインポートします。
PDT ファイルインポート1
PDT ファイルインポート2

[Finish]ボタンをクリックして完了。

PDT ファイルインポート3

PDT デバッグ設定

1.
メニューの[Run]->[Open Run Debug...]をクリックします。

2.
[PHP Web Page]をダブルクリックして、デバッグ設定を作成します。

主な設定は、次のようになります。

Server Debugger Xdebug
PHP Server サーバー一覧が表示されていない場合は、[New]ボタンをクリックして作成します。
デバッグ対象があるサーバー名を指定します。
File プロジェクトに追加したファイルを指定します。
URL デバッグ対象のURLを指定します。

PDT デバッグ設定

3.
[Apply]ボタンをクリックして、設定を保存します。

PDT デバッグ実行

メニューの[Run]->[Debug]をクリックします。

デフォルトでは、ブレークポイントを設定しなくても、PHPスクリプトの先頭でデバッガが処理を停止します。
次のキャプチャは、[F5]キーを押しながら関数の中まで入ったところです。

PDT デバッグ実行

その他

Windows(XP SP2)には、COMODO Firewallをインストールしています。
最初、ファイアーウォール(COMODO Firewall)にブロックされて、PDTでデバッグできるまで少し手間取りました。

COMODO FirewallのApplication Control Rulesで、次の設定を行いました。

  • IEXPLORE.EXEの設定で、親がeclipse.exeの場合、MiscellaneousのAllow invisible connection attemptsにチェックを入れる。

(一度、すべてのIEXPLORE.EXEの設定の設定を削除後、[Run]->[Debug]すると、COMODO Firewallが許可するかどうか聞いてくるかも。)


eclipseはとても重いというイメージがありましたので、軽快に動作するのが意外でした。

僕はemacsで作業することが多いですが、PDTでのデバッグをときどき利用したいと思います。

ノートPC(Windows XP)からメインで使用しているPCに接続できなくなっていました。
最近、メインのPCには、COMODO Firewallを導入していたので、それが原因でした。

COMODO FirewallでWindowsネットワークを見えるように設定したメモです。

1.COMODO Firewallを起動し、SECURITYボタンをクリック。

2.Network Monitorボタンをクリック。

3.Addボタンをクリック。
Protocolに「TCP or UDP」を選択し、Source IPに接続元のPCのIPアドレスを指定し、OKボタンをクリックします。
他の設定はデフォルトのままにしています。
Network Control Ruleの追加

4.Addボタンをクリック。
Protocolに「ICMP」を選択し、Source IPに接続元のPCのIPアドレスを指定し、OKボタンをクリックします。
他の設定はデフォルトのままにしています。
Network Control Ruleの追加

5.追加したルールを「Block & Log」ルールより前になるようにMove Upボタンをクリック。