xdebugポート転送を使用したリモートデバッグ

開発者はたびたび奇妙なエラーに遭遇します。 原則として、それらの理由は明らかではなく、それらを修正するには、コードで何が起こっているのかを詳細に理解する必要があります。 xdebugモジュールは、専門的なトラブルシューティングのためのツールです。 コードがブレークポイントに到達すると、xdebugはポートでリッスンするIDEに参加します(デフォルトは9000)。 このスキームはローカルホストでうまく機能します。 リモートサーバーの直視線にいる場合は、xdebug configにIPを登録し、同じ方法でデバッグできます。 しかし、開発者のコ​​ンピューターがNATの背後にある場合、サーバーから直接アクセスすることはできません。
localhostで長い間xdebugを使用していましたが、ポートフォワーディングを理解した後、リモートサーバーでデバッグする方法を学び、すべての開発者に役立つ命令を書くことにしました。最も重要なことは、それが機能することです。
IDEとして、PhpStorm、Chromeブラウザ、Ubuntu OSを使用しました。 ポート転送はWindowsでも問題なく機能します。

サーバー設定


sudo apt-get install php5-xdebug sudo nano /etc/php5/conf.d/xdebug.ini 

xdebug.idekeyオプションは、IDEに応じて、PhpStorm1、netbeans-xdebug、XDEBUG_ECLIPSE、または空にすることができます。
 zend_extension=/usr/lib/php5/20100525/xdebug.so xdebug.profiler_enable = 0 xdebug.remote_enable = 1 xdebug.remote_host = 127.0.0.1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.idekey=PhpStorm1 

その結果、phpinfo()の出力にはxdebugに関する情報が含まれているはずです。


クライアント設定


Chrome Xdebugヘルパー

idekeyを使用する場合、Chromeの場合はXdebugヘルパーをインストールする必要があります。
拡張機能の設定では、IDEキーパラメータにPhpStorm1を指定し、ドメインフィルタにホストを入力する必要があります。 デバッグするときは、アドレスバーで[デバッグの有効化]をクリックする必要があります。


PhpStormを構成する

ファイル->設定-> xdebug。 ポート9000。デバッグ構成の編集パネル->新規構成の追加-> PHP Webアプリケーション
名前、開始URLを指定し、新しいサーバーを作成する必要があります。 サーバーで、名前、ホスト、ポート、パスマッピングを指定します。 すべて保存します。

これで、ブレークポイントを設定し、デバッグボタンをクリックして、IDEがポートのリッスンを開始できるようになりました。 ブラウザはサーバー+開始URLページで起動し、パラメータはセッション識別子を決定するXDEBUG_SESSION_STARTになります。 デバッグ中に紛失しないでください。

ポート転送

XdebugはIDEでリッスンしているポートをノックしています。 リモートサーバーをデバッグしてNATに座りたい場合、ポートは使用できません。 最適なオプションは、sshを使用してリモートポートをローカルポートにリダイレクトすることです。 Windowsで動作させるには、 Cygwinをsshパッケージとともにインストールする必要があります。
 $ ssh -R 9000:127.0.0.1:9000 user@server 

ポート転送チェック

リモートマシンの9000ポートで接続を確立する必要があります。 すべてが正しく行われると、実際にはローカルポートとの接続が確立されます。
成功した接続:
 > telnet 127.0.0.1 9000 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 

telnetセッションを終了するホットキーは、Ctrl +]です。
考えられるエラー:
 telnet: Unable to connect to remote host: Connection refused -   .      . Connection closed by foreign host - IDE    

Source: https://habr.com/ru/post/J146547/


All Articles