20日目でございます。
ちなみに、去年も参加してまして何を書いたかというと、
「今更きけないあの娘の名前」
完全にネタですほんとうにあr(ry
(今年はなんか堅い気がする。。。。)
前日19日目は @basuke さんの フレームワークで語るMVCの話 : PHP Advent Calendar #19 でした。自分は CakePHP を使うことが多いんですが、
Fat Controller になりがちです。ビジネスロジックはモデルで書く。というと、
「当たり前」になりますが。「ビジネスロジック」って抽象的に思えるんです。
じゃあ、どこまでが厚い薄いというのも無いですし・・・。
デファクトスタンダードのようなものがあると便利なんですけどね・・・。
記事を正座して読み返したいと思います。
こんにちはー
みなさんデバッグしてますか?
echo ?
print_r() ?
var_dump() ?
file_put_contents(LOG_FILE, var_export($vars, true) . "\n", FILE_APPEND) で tialf 監視?
自分好みのデバッグをしてると思いますが、
今回はステップ実行でのデバッグをご紹介。
必要なもの。
・WEBサーバーで動いてる PHP に組み込まれてる Xdebug
・Eclipse PDT (windows) (今回は。)
・PortForwarder (今回は。)
・and you!
それぞれインストールします。
まず今回の前提。
デバッグ対象のサーバーは、インターネットにある。
デバッグの結果は見たいクライアントは LAN にある。
こんなイメージ
client --------- |firewall| ----- server
server からは client は見えません。
そこでどうするかというと、ポートフォワーディングします。
SSH クライアントでもできるんだろうけど、今回は PortForwarder というのを使用。
ポートフォワーディングで client の 9000番ポートを server の 9000 番ポートにマッピングします。
では設定。
[xdebug]
yum で入れた xdebug なら /etc/php.d/xdebug.ini を編集します。
remote_host が localhost なのはポートフォワーディングするから。
xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_port=9000 xdebug.remote_host=localhost次は eclipse の設定
Window -> Preferences -> PHP -> debug
PHP Debugger: XDebug にします。
debug のアイコンをクリックし、 Debug Configurations を開きます。
左のリストから [PHP Web Page] をダブルクリックして新規に追加します。
[Name]: example debug (適宜)
[Server タブ]
Server Debugger: XDebug
PHP Server
[New] を押下して新規に追加します。
Name: example.com
Enter the URL that points to the document root on this server
http://example.com (最後のスラッシュはいらない)
[Finish] 押下
[File]にはエントリポイントとなるファイルを[Browse]を押下して選択
[URL] のAuro Generate のチェックを外して、[FIle]で入力したファイルに対応するURLを入力します。
で一応のこんなカンジ。
スクリーンショットがあれなのは気にしない! |
[Apply] -> [Close] で設定閉じちゃいましょう。
そして最後に PortForwarder の設定。
任意の場所に config.txt を作成し、以下のように設定します。
ssh_config と一緒ですね。
Host example.com HostName IP_ADDRESS Port PORT_NUMBER RemoteForward 9000 localhost:9000 User SSH_USER(値は任意にお願いします)
重要なのは RemoteForward 9000 localhost:9000 です。
そして、PortForwarder.exe と同階層に秘密鍵をおいて完了です。
詳しいことは サイト を確認してください。
では早速ステップ実行してみましょう。
まず、PortForwarder を起動します。
Host は 先ほどの config.txt で指定したHost 名
Config file は config.txt を指定しましょう。
Connect で接続します。
Eclipse に戻ります。
今回はこんなカンジでデバッグしてみたいと思います。
ステップとして止めたい箇所(行番号の左のスペース)をダブルクリックして ブレークポイントを設定します。
(このマークはおせんべいって言いたい派)
この状態で、デバッグのアイコンから作成したデバッグメニュー[1 example debug]を選択します。
そうすると、PHP デバッグパースペクティブが開いて、じっくり確認することができます。
(もしかすると、この時ゴニョゴニョ聞かれるかも)
実行時の最初のステップで停止してますので、
F8 で次のステップに移動したり、それまでに定義された変数を確認したり、
いろいろお試しください。
require.php に設定したブレークポイントで止まってるの図 Valiablesビューを見ると、$aへの代入は終わっていが、$bへの代入が終わってないことがわかる。 |
以上簡単ではありますが、Eclipse を用いたステップ実行のやり方でした。
せっかくIDE を使っているので、いろいろ便利なものは使いたいですね。
Emacs を使うとモテる
vim を使うとモテる
Eclipse を使うとモテる <- NEW!
になるといいなーと思う今日この頃。
明日21日目は @tsuyoshikawa さん です。
よろしくお願いします。
- Eclipse PDT (download : here)
- Xdebug (Xdebug remote debug documantation : here)
- PortForwader