PHPのリモート・デバッグについて |
2004/11/16 |
私は普段、次のような環境で開発することが多いです。
- 秀丸などのエディタで、Windows上でコーディングする。この時、必要ならデバッグ・ルーチンを埋め込んでおく。
- ftpでLinuxにスクリプトを転送。
- ブラウザで開いて動作確認。
- 必要ならecho文などを所々に挿入して、繰り返す。
こういった方法で開発されてる方はたいへん多いかと思いますが、でも、複雑なスクリプトではやはりデバッガがほしくなりますよね。
そこで、dbgというフリーのデバッガを見つけましたので、インストールしてみました。
dbgについて
dbgはPHPのExtension機能を利用して、ネットワークを介してリモート・デバッグする機能をもっています。
ただし、dbg自体にはクライアント機能がないようですから、別途にクライアントが必要です。
以下では、日本語が通り、EUCも利用可能なデバッグ・クライアントPhpSimpleDebuggerを利用することを想定しています。
なお、dbgはWindowsでも動作しますので、dbgをインストールするとWindows上のスクリプトもデバッグできると思います。
dbgをLinuxへインストール
以下では、すでにPHPが正常動作しているものとして書いてます。PHPが動作していないようなら、そちらを先にインストールしておいてください。
-
ここでは、/usr/local/src/dbg-2.11.30-src.tar.gzにダウンロードしたこととして書きます。
解凍します。
$ cd /usr/local/src
$ tar zxvf dbg-2.11.30-src.tar.gz
$ cd dbg-2.11.30
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 を実行してパスを調べてください。
deferphpizeというインストール・スクリプトを編集して、先ほど調べたphpizeのパスを指定します。
$ emacs deferphpize
|
phpize=${phpize:-"/usr/local/bin/phpize"}
# 上記を以下のように変更します。
phpize=${phpize:-"/usr/bin/phpize"}
|
makeします。このソフトはスクリプトを実行するとmakeするようです。
$ ./deferphpize
インストールします。
$ su
# make install
/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
|
Apacheを再起動します。
# /etc/init.d/httpd restart
PhpSimpleDebuggerのインストール
ここではPhpSimpleDebuggerをデバッガのクライアントとして利用してみます。
- ISHINO16さんのページから、phpsimpledbg.zipをダウンロードします。
- インストーラはありませんで、phpsimpledbg.zipを適当なところに解凍します。
- 解凍したファイルの中にinstall.batがあるので、これを実行します。一瞬で終わります。
Windowsクライアントにdbglistnerをインストール
Linuxからリモート・デバッグするにはWindows側にdbglistnerをインストールする必要があるようです。
DBG | PHP Debugger.のdownloads/binaries for Win32 platformから「DBG 2.11.30 dbglistner」というのをダウンロードします。
インストーラはありませんから、dbg-2.11.30-cli-w32.zipを適当なところに解凍してください。
- 解凍したファイルの中にregister.batがあるので、これをダブル・クリックして実行します。一瞬で終わると思います。
- 解凍したファイルの中のDbgListener.exeを実行します。するとタスクバーに常駐します。
- タスクバーの
を右クリックして「Setup」を選択します。
- 以下のように、「IDE COM class」に「PHP Simple Debugger」を選択します。「OK」をクリックして画面を閉じます。

- タスクバーの
を右クリックして「Exit」を選択します。
- 解凍したフォルダに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 エディタが使えるようになってきたので、こちらもお勧めします。
私の場合、キーボード・マクロが使いたいので秀丸と併用しています。
参考サイト他
|