中年プログラマーの息抜き

カシマルです。 最近、新しい土地へ引っ越しをしたのですが、これを機に何か始めたいなと思ってブログをはじめました。気の向くままに更新していきます。

phpでサーバー デバッグを待ち受けます

はじめに

XdebugとPHPStormでリモートデバッグできるように設定ました。

開発環境

・Windows10(64bit)+PHPStorm v10.0.3(PHPのインストールは不要)
・CENTOS6+PHP5.6(ドキュメントルートを開発機と共有)

通信イメージなど

・クライアントとWEBサーバ(80ポート,443ポート,)で通信する
・WEBサーバと開発機(9000番ポート,など)で通信する

WEBサーバ(xdebugを設定)(/etc/php.d/15-xdebug.ini)

zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=開発機のIP
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_autostart=1

開発機(ファイアウォールを設定)

・9000番ポートを開放
f:id:tm-b:20160224112316p:plain

開発機(PHPStormでリモートサーバーを設定)

File->Settings->Languages & Frameworks->PHP->Servers
・80番ポート用の設定を追加
・443番ポート用の設定を追加

ステップ実行できるかの確認

・PHPStormで右上にある電話みたいなマークをおしてデバッグ接続待ち受けを開始
f:id:tm-b:20160224114630p:plain(停止中)
f:id:tm-b:20160224114636p:plain(待ち受け中)

・PHPStormでブレークを設定して適当なクライアントからアクセス
f:id:tm-b:20160224115528p:plain

まとめ

これまでは、xdebug.idekey設定後に、Run->Configurationsからリモートサーバーを設定していましたけど、それよりもシンプルになっていて良いなと思いました。
また、開発機=クライアント端末の場合、WEBサーバの xdebug.remote_host ではなくて xdebug.remote_connect_back=1 を設定する方法でもOK。