PHP SSHの逆ポートフォワードごしにリモートデバッグする

(コメント)

本番サーバ等、離れた環境にある PHP をリモートデバッグする場合。

開発用の PC は社内 LAN の中にあり、外からは直接アクセスできないとします。

その場合、SSH で逆向きのトンネルを作り、本番サーバ→ローカルPC と通信させます。

本番のPHPのxdebugの設定ファイル

例: /etc/php/5.6/apache2/conf.d/20-xdebug.ini

[xdebug]
zend_extension=xdebug.so

xdebug.remote_enable=1
xdebug.remote_port="9000"
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/tmp"
xdebug.max_nesting_level=1000
xdebug.idekey = "PHPSTORM"

phpinfo() した時、Scan this dir for additional .ini files    /etc/php/5.6/apache2/conf.d のような表示が出るのでそこから設定ファイルを探す

上記の設定の場合、デバッグ時 (URLのGET引数に ?XDEBUG_SESSION_START=12345  みたいに入ってる時) にローカルホストの 9000 ポートに接続するようになってます。

開発用ローカルPCで

$ ssh -R 127.0.0.1:9000:127.0.0.1:9000 user@example.com

として、本番サーバの9000 ポートをローカルの 9000ポートにトンネルします。

そして、PHPStorm でデバッグを実行すると、ブレイクポイントでブレイクしてデバッグできます。

サーバ設定のパスマッピングをちゃんと作成してないとブレイクしないのでご注意ください。

ちなみに、私はデプロイに Python の Fabric を使っているため、このようなコマンドでトンネルを作ります。

@runs_once
def xdebug():
    """
    xdebug用のSSHトンネルを作ります
    """
    local('ssh -R 127.0.0.1:9000:127.0.0.1:9000 {}@{}'.format(env.user, env.hosts[0]))

現在未評価

コメント

最近のツイート

  • 漫画全巻ドットコム@ポイント最大15倍!

    漫画全巻ドットコム@ポイント最大15倍! @mangazenkan

    ytyng

    おはようございます!さぁ、いよいよ始まります!加藤浩次さん司会のがっちりマンデー!!が、はじまります!みなさん、うちの濱田、ダンディーが、映ります! https://t.co/YQj2zxafqe
    3 週間, 1 日 前

  • ytyng

    ytyng @ytyng

    漫画全巻ドットコム またテレビ出ます! がっちりマンデー。日曜日放送です。サーバ増やして待ってます! @mangazenkan https://t.co/cFVryVA7kG https://t.co/ia5rUMIIfw
    4 週間 前

  • ytyng

    ytyng @ytyng

    やばい、機能がリリースされない! タイムゾーンか? サマータイム設定になってるのか? とか焦ってたら、リリース日になってなかっただけだった。今日月末じゃん。月初じゃないじゃん。1人で焦ってたけど結果1日得した気分
    2 ヶ月, 3 週間 前