web-dev-qa-db-ja.com

リモートサーバーのXdebugが接続しない

異なるコンピューターを使用するチームがremoteサーバーでPHP)をデバッグできるようにしたいのですが、 XdebugをNetBeans 7.0.1。で動作させるのに苦労しました。多くのオンラインのヒントを試しましたが、役に立ちませんでした。

記録のために、WampServerを実行しているWindows 7マシンにXdebuglocallyを正常にインストールしました。 can debug PHP NetBeansのブレークポイントで、Project Properties-> Run Configuration-> Run Asプロパティを- ローカルWebサイト。ただし、上記のように、私の目標はリモートWebサイトでNetBeansをデバッグすることです。

私のサーバーはUbuntu 11.04マシンです。 http://www.xdebug.org/find-binary.php からの出力を使用して、適切なバイナリをマシンに配置しました。 php.iniディレクトリとphp5/Apache2ディレクトリの両方にあるすべてのphp5/cliファイルを変更して、次の行を追加しました。

zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_Host=localhost
xdebug.remote_port=9000

phpinfo.php Webページを確認すると、次のように表示されます。

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans

そのため、Xdebugは正しくインストールされているようです。それでも、NetBeansでデバッグしようとすると、無限のステータスバーメッセージ接続を待機中(netbeans-xdebug)が表示されます。停止ボタンを押すと、X秒以内にxdebugからの接続が検出されませんでした。理由は、xdebugがインストールされていないか、適切に構成されていないことです

ここでローカル設定とサーバー設定を混同していますか? 投稿xdebug.remote_HostNetBeansを実行しているマシンのIPに設定する必要がありますが、異なるIPアドレスを持つマシンを使用してデバッグできるようにしたい。問題はポート9000かもしれませんが、ブロックされていないことを確認しました。

これを明確にする助けがあれば感謝します!

37
Gruber

PHP(およびXDebug)を実行しているサーバーは、ワークステーション/デスクトップに接続できる必要があります。

Diagram

そのため、specificIPアドレス(xdebug.remote_Host)または自動的に「戻る」(xdebug.remote_connect_back)。ただし、後者にはセキュリティ上の意味があります。これらの概要は マニュアル内 です。

57
Linus Kleen

重要なディレクティブは次のとおりです。

xdebug.remote_connect_back = On

これにより、Webサーバーは、デバッグセッションを要求しているコンピューターに接続できます。これにより、IPアドレスをハードコーディングする必要がなく、Xdebugを共有できます。このディレクティブは以前のバージョンには存在していなかったため、多くの場合、チュートリアルやドキュメントから省略されています。

また、すべてのクライアントコンピューターがポート9000への着信接続を受け入れることを確認する必要があります(xdebug.remote_port)。これには、ファイアウォールの構成と、デバッガークライアントが稼働していることの確認が含まれます。

16

私のために、 xdebug.remote_connect_back = On 動作しません。私がしたことは、クライアントマシンでsshポートフォワーディングを設定することでした。

リモートマシンのxdebug config:

xdebug.remote_enable=1
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req

クライアントマシンの転送ポート:

ssh -g -N -lusername -R9000:127.0.0.1:9000 [remote.Host.ip]

リモートマシンでのシェルアクセスを許可する必要があります。

15
medium8

私の場合、これらのコマンドは私を助けてくれました。

xdebug.remote_enable = On
xdebug.remote_autostart=1

注意: 'xdebug.remote_autostart = 1'が原因でGET/POST/COOKIE変数が存在しない場合でも、デバッガーは動作します

6
Asaf Hananel

サーバー側php.iniのxdebug.remote_connect_back = Onに感謝
PhpStormでデバッグセッションを開始できるようにするには、Chromeに このプラグイン を使用する必要がありました

1
Dmitry Davydov

Dockerを構成しようとしたときに何度か同じ問題が発生し、何度も頭をひっかいた後、これがそれを修正する方法であることに気付きました。それで、私はこれを将来の自分に対する答えとしてここに置くことにしました。

ほとんどの場合、Dockerfileはこのステートメントをphp.iniに追加していました。

xdebug.remote_connect_back     = on

これにより、すべてが正常に見えるようになりますが、何らかの理由でPHP storm。のデバッグ接続が実際にキャッチされません。

xdebug.remote_connect_back     = 0
xdebug.remote_Host             = Host.docker.internal

もちろん、その後も実行する必要があります:$ docker-compose down$ docker-compose buildおよび$ docker-compose up -d

1
Jules Colle

以下を設定する必要があります。

xdebug.remote_Host=192.168.1.104

192.168.1.104は、IDEで作業するクライアントのIPです。

0
beto.bateria

デバッグを開始するために起動しているページ拡張機能は何ですか?私は夢中になって、XDebugのすべての設定がうまくいく眠れぬ夜を過ごしたことを覚えています。問題は、.PHPで起動するのではなく、.HTMLで起動することでした。

その後、.PHPファイルを使用してデバッグを開始してください。

0
Abdul Munim