SSH トンネル経由のリモートデバッグ
このチュートリアルでは、 SSH トンネル (SSH ポート転送とも呼ばれます)を使用して、Xdebug を実行しているリモートサーバーと PhpStorm を実行している開発マシンとの間に安全な接続を設定する方法について説明します。 これは、間にファイアウォールがある場合、NAT ルーターが直接接続を妨げている場合、または ISP またはネットワークインフラストラクチャが開発者マシンへの受信 TCP 接続を許可していない場合に、リモートマシンでコードをデバッグできます。

リモートサーバーが開発者マシンに直接接続できる場合(例えば、 Vagrant マシンを使うなど)、SSH トンネルは必要ない場合もあります。
前提条件
1。 デバッガーはリモートサーバー上にセットアップされています
デバッグを開始する前に、PHP アプリケーションが実行される Web サーバーにデバッグエンジンがインストールされ、適切に構成されていることを確認してください。
PhpStorm は、最も人気のあるツールである Xdebug と Zend Debugger でデバッグをサポートしています。 これらのツールは、互いにブロックし合うため、同時に使用することはできません。 この問題を回避するには、 Xdebug を構成する および Zend デバッガーの構成 に従って、関連する PHP インタープリターの php.ini ファイルを更新する必要があります。
例: Xdebug では、サーバーの php.ini で次の設定が指定されていることを確認します。
zend_extension: Xdebug デバッグエンジンを使用することを示す設定。xdebugに設定するか、/usr/lib/php/20190902/xdebug.soなどのxdebug.soファイルへのフルパスを使用します。xdebug.mode: 有効にする Xdebug 機能を制御する設定。 デバッグの場合はdebugに設定します。xdebug.client_host:PhpStorm が実行されていて、Xdebug からの接続をリッスンしている IP アドレスまたはホスト名。xdebug.client_port:PhpStorm が実行されているホストで Xdebug が接続を試みるポート。 デフォルトのポートは9003です。
2。 PhpStorm では受信デバッガー接続のリッスンが有効になっています
PhpStorm で、以下のいずれかの方法で受信デバッグ接続のリッスンを有効化します:
ツールバー / ステータスバーの
をクリックします。
メインメニューで を選択します。
これにより、Web サーバーでデバッグセッションが開始されると PhpStorm が反応し、 デバッグツールウィンドウ が自動的に開きます。 デバッグセッションを開始する前に、 ブレークポイントが設定されているか、 設定 ダイアログ Ctrl+Alt+S の デバッグ ページで PHP スクリプトの最初の行で中断する。 オプションが有効になっていることを確認してください。
SSH トンネルをセットアップする
デバッグセッションを開始すると、Xdebug がリモートサーバーから PhpStorm がリッスンしている開発者マシンのポートへの TCP 接続を開始します。
SSH ポート転送の考え方は、リモートサーバー上に「仮想」TCP ポートを作成し、そのトラフィックを開発者マシン上の TCP ポートに送信して、トラフィックを SSH 経由でトンネリングすることです。
SSH トンネルをセットアップする
SSH ポート転送を設定するには、コマンドラインで次の ssh コマンドを実行します。
9003:localhost:9003の9003:は、SSH サーバー(転送ホスト)上で ここから Xdebug 接続がlocalhostに転送されるポートです。9003:localhost:9003のlocalhost:9003は、SSH クライアント(PhpStorm を実行しているマシン)の IP アドレスおよび ここへ Xdebug 接続が転送されるポートです。localhostは、基本的にこのsshコマンドを実行しているマシンです。username@hostnameは、SSH サーバー (転送ホスト) のアドレスと、そのサーバーでの SSH 認証に必要なユーザー名です。
SSH トンネルが正常に設定されたことを確認するには、 PhpStorm ブックマークレット、 ブラウザーデバッグ拡張機能 、または PhpStorm を使った PHP CLI スクリプトのデバッグで説明されている手法を利用して、リモートサーバーでデバッグセッションを開始してください。 PhpStorm が受信接続を検出するとすぐに、それを受け入れるよう促す Xdebug からの受信接続 ダイアログが表示されます。

PhpStorm でのデバッグプロセスの詳細については、 ゼロ構成デバッグ および 中断されたプログラムを調べる を参照してください。
リモート PHP インタープリターまたは SSH トンネルを介して PHP CLI スクリプトをデバッグする
リモート PHP インタープリターが適切に設定されている場合、デバッグにリモート PHP インタープリターを利用して実行/デバッグ構成を作成することが可能です。
SSH トンネルが稼働したら、 PHP CLI スクリプトもデバッグできます。 デバッガーはリモートマシン上で実行されるため、CLI デバッグセッションを開始するには、PHP コマンドラインスイッチを使用するか、(リモートマシン上の)環境変数を使用します。 このワークフローは公式に推奨されているデバッグ方法ではありませんが、リモートサーバー側からデバッグセッションを確立する必要がある場合には便利です。
トラブルシューティング
デバッガーが接続しない、または接続を拒否する
デバッガーが接続できないか、接続を拒否する場合は、次の点を確認してください。
Xdebug が 127.0.0.1 およびポート 9000(Xdebug 2 の場合)またはポート 9003(Xdebug 3 の場合)に接続するように構成されていることを確認します。
Zend Debugger を使う場合、PhpStorm ブックマークレットまたはブラウザーデバッグ拡張機能が 127.0.0.1 に接続するように構成されていることを確認してください。
SSH トンネルの設定前に、PhpStorm が受信デバッガー接続をリッスンしていることを確認してください。
マシンが再起動されるか接続が失われると、SSH トンネルを再確立する必要があります。
リモートファイルパスがプロジェクト内のファイルパスにマップされていません
場合によってはデバッガーに接続できますが、リモートとプロジェクトファイル間のマッピングが定義されていないことを示すエラーメッセージが表示されます。 これは、PhpStorm がデバッグ中のファイルに対応するローカルファイルを判別できないことを意味します。

この問題は、 クリックしてパスマッピングを設定する をクリックして、必要なパスマッピングを提供することで解決できます。 さらに、 Web サーバーに接続する で説明されている手法を使用して、これらのマッピングを構成できます。