異なるコンピューターを使用するチームが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_Host
はNetBeansを実行しているマシンのIPに設定する必要がありますが、異なるIPアドレスを持つマシンを使用してデバッグできるようにしたい。問題はポート9000かもしれませんが、ブロックされていないことを確認しました。
これを明確にする助けがあれば感謝します!
PHP(およびXDebug)を実行しているサーバーは、ワークステーション/デスクトップに接続できる必要があります。
そのため、specificIPアドレス(xdebug.remote_Host
)または自動的に「戻る」(xdebug.remote_connect_back
)。ただし、後者にはセキュリティ上の意味があります。これらの概要は マニュアル内 です。
重要なディレクティブは次のとおりです。
xdebug.remote_connect_back = On
これにより、Webサーバーは、デバッグセッションを要求しているコンピューターに接続できます。これにより、IPアドレスをハードコーディングする必要がなく、Xdebugを共有できます。このディレクティブは以前のバージョンには存在していなかったため、多くの場合、チュートリアルやドキュメントから省略されています。
また、すべてのクライアントコンピューターがポート9000への着信接続を受け入れることを確認する必要があります(xdebug.remote_port
)。これには、ファイアウォールの構成と、デバッガークライアントが稼働していることの確認が含まれます。
私のために、 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]
リモートマシンでのシェルアクセスを許可する必要があります。
私の場合、これらのコマンドは私を助けてくれました。
xdebug.remote_enable = On
xdebug.remote_autostart=1
注意: 'xdebug.remote_autostart = 1'が原因でGET/POST/COOKIE変数が存在しない場合でも、デバッガーは動作します
サーバー側php.iniのxdebug.remote_connect_back = On
に感謝
PhpStormでデバッグセッションを開始できるようにするには、Chromeに このプラグイン を使用する必要がありました
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
以下を設定する必要があります。
xdebug.remote_Host=192.168.1.104
192.168.1.104
は、IDEで作業するクライアントのIPです。
デバッグを開始するために起動しているページ拡張機能は何ですか?私は夢中になって、XDebugのすべての設定がうまくいく眠れぬ夜を過ごしたことを覚えています。問題は、.PHP
で起動するのではなく、.HTML
で起動することでした。
その後、.PHP
ファイルを使用してデバッグを開始してください。