PHPのリモート・デバッグについて

2004/11/16

私は普段、次のような環境で開発することが多いです。

  • 秀丸などのエディタで、Windows上でコーディングする。この時、必要ならデバッグ・ルーチンを埋め込んでおく。
  • ftpでLinuxにスクリプトを転送。
  • ブラウザで開いて動作確認。
  • 必要ならecho文などを所々に挿入して、繰り返す。

こういった方法で開発されてる方はたいへん多いかと思いますが、でも、複雑なスクリプトではやはりデバッガがほしくなりますよね。

そこで、dbgというフリーのデバッガを見つけましたので、インストールしてみました。


dbgについて

dbgはPHPのExtension機能を利用して、ネットワークを介してリモート・デバッグする機能をもっています。

ただし、dbg自体にはクライアント機能がないようですから、別途にクライアントが必要です。

以下では、日本語が通り、EUCも利用可能なデバッグ・クライアントPhpSimpleDebuggerを利用することを想定しています。

なお、dbgはWindowsでも動作しますので、dbgをインストールするとWindows上のスクリプトもデバッグできると思います。


dbgをLinuxへインストール

以下では、すでにPHPが正常動作しているものとして書いてます。PHPが動作していないようなら、そちらを先にインストールしておいてください。

  1. DBG | PHP Debugger.のdownloads/sourcesから「DBG 2.11.30 module sources」というのをダウンロードします。
    ここでは、/usr/local/src/dbg-2.11.30-src.tar.gzにダウンロードしたこととして書きます。
  2. 解凍します。
    $ cd /usr/local/src
    $ tar zxvf dbg-2.11.30-src.tar.gz
    $ cd dbg-2.11.30
  3. phpizeというコマンドのパスを調べておきます。
    $ which phpize
    Vine3.0であれば「/usr/bin/phpize」と表示されると思います。パスが見つからないようでしたら次のようにしてphp-develをインストールします。
    $ su -
    # apt-get update
    # apt-get install php-devel ← PHP4の方
    # apt-get install php5-devel ← PHP5の方
    # exit
    その後、もう一度 which phpize を実行してパスを調べてください。
  4. deferphpizeというインストール・スクリプトを編集して、先ほど調べたphpizeのパスを指定します。
    $ emacs deferphpize
    phpize=${phpize:-"/usr/local/bin/phpize"}
    # 上記を以下のように変更します。
    phpize=${phpize:-"/usr/bin/phpize"}
  5. makeします。このソフトはスクリプトを実行するとmakeするようです。
    $ ./deferphpize
  6. インストールします。
    $ su
    # make install
  7. /etc/php.iniを編集します。
    # emacs /etc/php.ini
    この時、インストール先をちゃんと確認しておきましょう。うちでは次のようになりました。
    Installing shared extensions:     /usr/lib/php5/
    # 以下を変更
    extension_dir = /usr/lib/php5/
     
    # 以下を「extension=」が並んでいる所の最後に追加
    extension=dbg.so
     
    # 以下をModule Settingsのところに追加
    [Debugger]
    debugger.enabled=on
    debugger.profiler_enabled=on
  8. Apacheを再起動します。
    # /etc/init.d/httpd restart

PhpSimpleDebuggerのインストール

ここではPhpSimpleDebuggerをデバッガのクライアントとして利用してみます。

  1. ISHINO16さんのページから、phpsimpledbg.zipをダウンロードします。
  2. インストーラはありませんで、phpsimpledbg.zipを適当なところに解凍します。
  3. 解凍したファイルの中にinstall.batがあるので、これを実行します。一瞬で終わります。

Windowsクライアントにdbglistnerをインストール

Linuxからリモート・デバッグするにはWindows側にdbglistnerをインストールする必要があるようです。

  1. DBG | PHP Debugger.のdownloads/binaries for Win32 platformから「DBG 2.11.30 dbglistner」というのをダウンロードします。
  2. インストーラはありませんから、dbg-2.11.30-cli-w32.zipを適当なところに解凍してください。
  3. 解凍したファイルの中にregister.batがあるので、これをダブル・クリックして実行します。一瞬で終わると思います。
  4. 解凍したファイルの中のDbgListener.exeを実行します。するとタスクバーに常駐します。
  5. タスクバーのアンテナ・マークを右クリックして「Setup」を選択します。
  6. 以下のように、「IDE COM class」に「PHP Simple Debugger」を選択します。「OK」をクリックして画面を閉じます。
    セットアップ画面
  7. タスクバーのアンテナ・マークを右クリックして「Exit」を選択します。
  8. 解凍したフォルダにDbgListener.iniが出来ているはずです。これをエディタで編集し、「codepage=932」を「codepage=28591」に変更して保存します。

リモート・デバッグの方法

リモート・デバッグには2種類あるようなので、ここではその2つを書いておきます。

PhpSimpleDebuggerを起動する方法

単純にPhpSimpleDebuggerを起動しておいて、URLを入力します。するとデバッグできます。

この方式の欠点は、POSTした時の動作を確認することができない点です。GETであれば問題なくデバッグできます。

debugbreak()を利用する方法

こちらの方法では、POST時もデバッグ可能です。

テストしたいスクリプトの中に、 debugbreak(); という文を入れておきます。そしてサーバにこのスクリプトを配置しておきます。

Windows側では DbgListener.exe を立ち上げておきます。

ブラウザ(InternetExplorer, Mozilla Firefoxで動作確認しました)で、テストしたいスクリプトのURLを表示させると、debugbreak()のところでPhpSimpleDebuggerが自動起動します。ここでブレークした感じになります。

こちらの方式では、GET時のデバッグももちろん可能ですが、以下のようにしておけばPOST時にデバッガが立ち上がります。
if ($_SERVER['REQUEST_METHOD'] == 'POST') debugbreak();


エディタについて

今までずっと秀丸を使い込んできたのですが、PHP エディタが使えるようになってきたので、こちらもお勧めします。

私の場合、キーボード・マクロが使いたいので秀丸と併用しています。


参考サイト他

Copyright©2001-2008 釣ったよ! All Right Reserved.    sg@tsuttayo.sytes.net