プロフィール

ハンドル
くろい えのぐ
twitter
@enogu

たぶんプログラマ
主にPHP版汝は人狼なりや?のメンテナンスなどをやっているとかいないとか。

使っている言語はC#とPHPとときどきC。Javascript(かDart)をマスターしたい。

最近更新された記事

FormItでメールフォームを作成する
2013-08-20
Quip ー MODXページにコメント欄をつける
2012-08-20
MODX Revolutionのアクセス制御について
2012-07-18
せめて日本人に何となく伝わってほしいポインタの話
2012-06-13
MODXでブログを作ってみた その1:getResources
2012-04-04

タグ

  • PHP (1)
  • Silverlight (1)
  • xPDO (1)
  • 残念なお知らせ (2)
  • OpenIndiana (2)
  • PIC (2)
  • MODX (8)
  • サーバーのxdebugを開発マシンのNetBeansでいただく

    作成日: 2011-12-09 / タグ: PHP

    ちなみにxdebugっぽいのは開発用PCが持つとIDEとデバッガが両方そなわり最強に見えるテストサーバーが持つと逆に頭がおかしくなって死ぬ。 ─ ブロント

    この記事はKernel/VM Advent Calendar 2011 9日目の記事です。あわれカーネルとかVMっぽいネタは役目を果たせず消えて行ったのですが、それはまた別のお話。

    はじめに:NetBeansのPHPデバッガ

    ご存知のとおりNetBeansのPHPプラグインはxdebugによるデバッグをサポートしています。xdebugについての詳しい説明は割愛しますが、xdebugのちょっと面倒なところにデバッガのホストアドレス(xdebug.remote_host)にネットワークアドレスが指定できないという問題があります。開発マシンのXAMPPなどでデバッグしている場合はお互いローカルホストなのでまったく気になりませんが、テストサーバーのデバッグとなるとそうもいきません。

    そう、開発マシンのアドレスが自動割り当てだとうまく設定できないのです。

    DBGPプロキシの導入

    この問題に対応するためにはDBGPプロトコルに対応したプロキシが必要です。今回はActiveStateが提供しているPythonデバッガ用のプロキシを使用します。

    1. まずPythonをインストールします。
    2. ActiveStateのサイトから適当なバージョンのPython Remote Debugging Clientをダウンロードします。PHP版を選ぶとプロキシが付属していない罠がもれなくついてきます。
    3. ダウンロードした書庫の中身をサーバーの適当なディレクトリに展開します。私は面倒だったのでホームディレクトリにそのまま入れました。
    4. [インストール先]/bin/pydbgpproxyを実行します。中身はただのpythonスクリプトなので実行権限を追加すればすぐ起動できます。
      この時、-dオプションでデバッガのホストアドレスとポート、-iオプションで公開するホストアドレスとポートを指定します。

    NetBeansの設定

    NetBeansのプロジェクトのプロパティを開きます。実行設定のタブを開き、詳細設定ボタンを押すとデバッガのプロキシを設定する欄があります。公開したホストアドレスとポート番号を入力して設定を保存し、NetBeansを再起動します。

    あとは通常の手順でデバッグを開始すればOK。enjoy!!

    サンプル

    例えば、プロキシが同じテストサーバー(192.168.0.2)上にインストールされていて、xdebug.remote_portが9000の場合、以下のようなコマンドで起動することになります。

    $ [インストール先]/bin/pydbgpproxy -d 127.0.0.1:9000 -i 192.168.0.2:9001
    

    閑話休題

    NetBeansにはSSHのターミナルもあるので、プロキシの起動が手動でも大して苦にならないのはいいのですが、PuTTYで作った秘密鍵では作動しなかったのでssh-keygenで鍵を作り直す羽目になりましたとさ。

    まとめ

    • NetBeansはいけず
    • リモートマシンでxdebugを使うときはサーバー側にプロキシを入れましょう
    • 設定方法はインターネットに掲示されているので熟知すべし。(このサイトの説明はEclipse PDT向けです)
    • 実はNetBeansを再起動しないと設定が反映されないことに気づくのに30分くらいかかりました…