web-dev-qa-db-ja.com

PHPリモートデバッグ:XDebugはJetBrains phpStormクライアントに接続できません

次のソフトウェア構成でリモートデバッグを機能させるのが好きです。

Win 7 Pro 64ビットWAMPサーバー2.2(32ビット)を含むApache 2.2.22、PHP 5.4.3、XDebug php_xdebug-2.2.1-5.4-vc9.dll JetBrains PHPStorm 4.0.3

1.)WAMPが稼働しています。私のサイトは、localhost/fox /の下にあります。

2。)PHP Stormには、ソースファイルとApacheエイリアスlocalhost/foxの間にマッピングがあるプロジェクトがあります

2.)php拡張機能XDebugをインストールし、php.iniに次の行を追加しました

[xdebug]
zend_extension="c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.1-5.4-vc9.dll"
xdebug.remote_enable=On
xdebug.remote_Host="localhost"
xdebug.remote_port=9000
xdebug.remote_connect_back=On
xdebug.remote_autostart=On
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=off
xdebug.profiler_output_name=cachegrind.out.%t.%p
xdebug.profiler_output_dir="c:/wamp/tmp"
xdebug.remote_log="C:/wamp/tmp/xdebug.log"
xdebug.remote_cookie_expire_time=6000

これにより、リモートデバッグXDebugとコールバックアドレスが構成されます。

ここですでにインストールを確認しています:xdebug.org/wizard.php

3.)phpstormを構成し、最初にローカルサーバーを追加しました

ここで私の設定を確認しました

http://www.bilder-hochladen.net/files/jrn0-2-c81e-jpg-nb.html

(サーバーアドレスとして127.0.0.1/foxを試し、代わりにlocalhostを試しました)

デバッグ設定を階層化: http://www.bilder-hochladen.net/files/jrn0-1-c4ca-jpg.html

今私はApacheを再起動し、phpstormに入り、ブレークポイント(赤)を設定し、関数をクリックします

Run  -> Start listen to PHP Debug Connections

電話の受話器は緑色に変わりつつあり、それが正確に何を意味するのかはわかりませんが、それは私にとってポジティブなシグナルです。

ローカルWebサーバーでphpスクリプトを実行すると、何も起こりません。プログラムはブレークポイントを超えて実行され、停止しません。

Xdebuggersログ(C:/wamp/tmp/xdebug.log)で、次のようなメッセージが大量に見つかります。

 I: Checking remote connect back address.
 I: Remote address found, connecting to ::1:9000.
 E: Could not connect to client. :-(
 Log closed at 2012-07-19 14:21:08

インターネットのどこかで、Windowsファイアウォールが通信をブロックする可能性があるというヒントを見つけたので、完全にオフにしましたが、それは役に立ちませんでした。

また、telnet経由でlocalhost:9000に接続しようとしましたが、phpstormから応答がありました。

エラーを検索する場所や、このようなものを機能させるために他に何を試みることができるかについて誰かが考えていますか?

マイケル、よろしくお願いします。

p.s.申し訳ありませんが、私はここで新しいため、3つ以上のリンクを投稿することは許可されていません。そのため、xdebugウィザードへのハイパーリンクはありません。

19
cimmx

多分少し遅れますが...

ここで、設定に矛盾があります。

xdebug.remote_Host="localhost"
xdebug.remote_connect_back=On

これらの2つの設定は重複しています。あなたのケースは何ですか?

a)単一のオリジンからのみアプリケーションをデバッグしたい(たとえば、localhostから開発してデプロイしている)。

これでほぼ完了です。リモートホストがlocalhostであることをすでに定義しています。 remote_connect_back行をコメントアウトします(;を使用)

b)複数の開発ソースを受け入れたい(たとえば、同じネットワーク内のアプリケーションをデバッグする複数のマシン)。

次に、remote_Host行が上書きされるため、削除またはコメントすることができます。

これは事実上、現在実行している構成です。それで、それの何が問題になっていますか?このスクリプトを実行して確認してください。

<?
echo $_SERVER['REMOTE_ADDR'];

出力は::1になります。そうですね、Apacheサーバーにリクエストを送信しているホストはlocalhostです。そして、Apacheはその名前をIPv6アドレス::1として解決していますが、これは最終的には間違いではありません。しかし、XdebugはIPv6アドレスに接続できません。見る:

I: Remote address found, connecting to ::1:9000.
E: Could not connect to client. :-(

したがって、私たちの目標は、ApacheがlocalhostできればをIPv4アドレスに解決するようにすることです(OSレベルでのIPv6のサポートを無効にすることもApacheレベルで)。これは、hostsファイルに次の行を追加することで実現できます。

127.0.0.1 localhost

この単純なハックでうまくいきます!これで、localhostは常にIPv4アドレスとして解決されることが望ましいですが、::1は依然として完全に理解できます。

12

IPV6を無効にしてみてください http://support.Microsoft.com/kb/929852 、接続しようとすると、これが問題だと思います。

:: 1:9000に接続しているリモートアドレスが見つかりました。

システムはIPV6に接続しようとしていますが、XDebugはIPV4に対してのみ有効になっていると思います。

6
sbarrat

コードのブレークポイントは正確にどこにありますか? XDebugが面白いことがあることを私は知っています。

PHP 5.4の場合、Xdebug設定は次のようになります。

[XDebug]
zend_extension="<path to php_xdebug.dll>"
xdebug.remote_enable=1
xdebug.remote_port="<the port for XDebug to listen to>" (the default port is 9000)
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"

http://www.jetbrains.com/phpstorm/webhelp/configuring-xdebug.html

0
bear