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   
      
      






All Articles