IDE netbeansからプロジェクトをデバッグするために、xdebugを構成するのに助けが必要です。
これらは私のコンポーネントの機能です:
XAMPP 1.8.2
PHP:5.4.16
netbeans:7.3.1
Apache:2.4.4(Win32)
これは私のphp.iniファイルの最後の部分です。
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9-nts.dll"
;xdebug.profiler_append = 0
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_Host = "127.0.0.1"
;xdebug.trace_output_dir = "C:\xampp\tmp"
phpinfo()を実行すると、xdebugはインストールされず、netbeansからプロジェクトをデバッグすると、「Waiting For Connection(netbeans-xdebug)」と表示されます。
誰かがそれを設定するのを手伝ってくれますか?とてもありがたいです。
前もって感謝します。
問題を修正しましたか?そうでない場合は、これを試してください。
1.)php.ini
ファイルのコンテンツ
[xDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9.dll"
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
;xdebug.remote_Host="localhost:81"
xdebug.remote_Host=192.168.1.5
;xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"
xdebug.remote_Host=192.168.1.5
-これは私のシステムのIPv4アドレスです。localhost
および127.0.0.1
でデバッグできなかったため、これに変更しました。
netBeans IDEで、Tools-> Options -> PHP -> Debugging
を開きます。デバッガーポートとセッションIDの値は、php.ini
で指定されたポートとidekeyと一致する必要があります。
Php.iniを保存し、Apacheを再起動してデバッグを試みます。
ありがとうジョンソン
Netbeansは、デバッグセッションを開始すると、2つのリスナーを開始します。1つは0.0.0.0:9000(システムにあるすべてのIPv4 IP)上にあり、もう1つはIPv6インターフェース上にあります。
NetbeansとWebサーバーが同じシステム上にある場合、理想的には、XDebugが127.0.0.1:9000
にデータを送信するように構成され、NetBeansは(そしてセッションごとに)リッスンします...
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0
何らかの理由でXDebugが127.0.0.1
にレポートできない場合、またはNetbeansが127.0.0.1
でリッスンしていない場合、元のリクエストの$_SERVER['REMOTE_ADDR']
にデータを送信するようにXDebugを構成できます...
xdebug.remote_connect_back=1
この方法では、正確なIPを指定する必要はありません(つまり、上記のようにLAN IPに答える場合:192.168.1.5
)。ここでの欠点は、どのソースでも接続できることです。
さらに問題がある場合は、これ...
xdebug.remote_autostart=1
...は、allリクエストのデバッグプロセスも開始します。適切なセッション開始クエリまたはCookieを持つリクエストだけではありません。ここでの欠点は、すべてのリクエストがデバッグデータの収集とレポートを開始することです(すべてが遅くなり、より多くのデータが生成されます)。
私が収集したものからですが、Windows(XAMPP、Wamp-Serverなど)でのこれらの「Waiting For Connection(netbeans-xdebug)」問題の大部分は、通常Windows FirewallとMcAfee(またはその他のファイアウォールとアンチ-ウイルスソフトウェア)接続をブロックしています...
私は.Netプログラマーであり、PHPが初めてです。最近、自分のマシン(Windows)でオープンソースPHPアプリケーションをホストしようとしました。 5〜6日間の闘争の後、私が働いたステップをリストします。
XAMPPおよびNetBeansの以前のインストールをすべてアンインストールし、新規インストールを続行しました。
これは誰にとっても解決策ではないかもしれませんが、私にとってはうまくいきました。
xAMPPをインストールする
pHP用のnetbeansをインストールします。
IISを開いて停止します。デフォルトではポート80で実行されています(ポート80でXAMPPを実行しています、つまりデフォルト、他のポートで実行するには追加の構成設定が必要な場合があります)
XAMPPコントロールパネルを開き、Apacheを起動します。ポート80が空いている場合、問題は発生しません。
ブラウザでlocalhostを開くと、XAMPPホームページが表示されます。
左側のペインでphpinfo()
リンクを開き、ページ上のすべてのコンテンツをコピーします。 http://xdebug.org/wizard.php に移動し、TextBoxにすべてのコンテンツを貼り付けて、[phpinfo出力の分析]をクリックします。構成に適したXdebugファイルを表示します。
指定されたXdebug dllをダウンロードし、C:\xampp\php\ext
にコピーします(XamppはデフォルトのXamppインストールディレクトリです)
XAMPPコントロールパネルに移動し、Apacheの前にある[構成]ボタンをクリックして[php.in
]を選択します。
類似または正確に似た行を検索し、
; zend_extension = "C:\ xampp\php\ext\php_xdebug.dll"
(セミコロンはコメントされていることを意味します)
セミコロンを削除し、パスを次のようにコピーしたdllのパスに置き換えます。
zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll"
同様に行を見つける
; xdebug.remote_enable = 0; xdebug.remote_handler = "dbgp"
両方の行の前にあるセミコロンを削除し、remote_enable = 1
を作成します
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
Apacheサーバーを再起動します。
C:/XAMPP/htdocs/(your_website)/
の下にWebサイトのコードをコピーします。つまり、index.php
はC:/XAMPP/htdocs/(your_website)/index.php
にある必要があります
Netbeansを開き、既存のソースから新規プロジェクト-> PHP-> PHPプロジェクトを選択し、htdocsフォルダーにコピーしたフォルダーを選択します。ローカルWebサーバーで実行するように設定します。
index.php
の最初の行にブレークポイントを設定し、デバッグします。
それでおしまい。
さまざまな投稿で追加の設定が提案されましたが、上記の手順は完璧に機能しました。
ここでxdebug.remote_Hostについて言及したい
xdebug.remote_Host="127.0.0.1"
有効じゃない。場合によっては機能することもありますが、引用符も問題を引き起こす可能性があります。引用符でIPアドレスを使用する場合、ほとんどの人には問題はありませんが、これは悪い先例となります。ホスト名またはURLを使用する場合は、引用符で囲む必要があると人々に思わせます。これは誤りです。引用符で囲まれたURLは機能しません。
URLを使用してデバッグする場合は、次のようにequalsの後にURLを置くだけでこれを実行できます。
xdebug.remote_Host=subdomain.mydomain.com
また、ポート番号がある場合は追加しないでください。これは機能しません:
xdebug.remote_Host=subdomain.mydomain.com:9000
これはあなたがやりたいことです:
xdebug.remote_Host=subdomain.mydomain.com
xdebug.remote_port=9000
これを行う場合、remote_connect_backが無効になっていることを確認してください。このような:
xdebug.remote_connect_back=0
または、次のように完全に省略できます。
;xdebug.remote_connect_back=1
Remote_connect_backが有効になっている場合、着信接続からIPアドレスを取得しようとし、remote_Hostとポートの設定を無視します。
Xdebugは単純な古いTCPを使用して接続を確立します。これはHTTPではありません。つまり、Fiddlerなどのツールでは、デバッグに関するパケットや情報は表示されません。デバッグする必要があり、サーバーがIDEを呼び出しているかどうかを確認する場合は、いくつかの方法で確認できます。
Wiresharkでは、TCPトラフィックを表示できます。 Windowsを使用している場合も、Microsoft Message AnalyzerはTCPを監視できます。
ただし、リモートデバッグの問題の原因である可能性のあるIDEを削除するだけの場合は、代わりにローカルTCPサーバーを起動することをお勧めします。
これは、Javaサーバーを起動するための素晴らしい無料TCPプログラムです。 http://sockettest.sourceforge.net/
[IPアドレス]セクションで、127.0.0.1をリストするか、0.0.0.0のままにします。次に、ポート番号をリストします。通常、xdebugのデフォルトは9000です。
TCPサーバーが実行されたら、xdebug_break()を使用してリモートWebページを開きます。関数呼び出し。これにより、リモートサーバー上のxdebugに、php.iniにリストされているサーバーとポートでデバッグを開始するよう指示します。
ソケットサーバーを監視し、接続が確立されるかどうかを確認します。最初に送信されるデータは次のようになります。
<init appid="APPID"
idekey="IDE_KEY"
session="DBGP_COOKIE"
thread="THREAD_ID"
parent="PARENT_APPID"
language="LANGUAGE_NAME"
protocol_version="1.0"
fileuri="file://path/to/file">
ここまで到達したら、リモートデバッグが機能しています。サーバーを停止し、IDEをセットアップしてそのポートでリッスンするだけです!
あなたが私たちのほとんどと同じなら、あなたの開発者のマシンはNATを備えたルーターの後ろにいます。これは、オフィスの全員が同じパブリックIPアドレスを持っていることを意味します。これは問題です。xdebugがそのIPアドレスに連絡してデバッグを開始すると、コンピューターではなくルーターにヒットするからです。ルーターは、特定のポート番号を個々のコンピューターに渡すように構成できますが、ルーターの設定を元に戻すまでそのポートが開いているので、そのようにしたくない場合があります。
別のオプションは、SSHを使用することです。これを行う方法の素晴らしい例があります: http://stuporglue.org/setting-up-xdebug-with-netbeans-on-windows-with-a-remote-Apache-server/#attachment_1305
私の優先オプションは Ngrok を使用することです。 Ngrokは、http、https、およびTCPトラフィックをリダイレクトするための優れたツールです。 TCPリダイレクト機能を使用するには、無料アカウントにサインアップする必要があります。
アカウントにサインアップし、APIキーをコンピューターに追加したら、IDEがオンになっているコンピューターで次のコマンドを実行します。
ngrok tcp 9000
これにより、ngrokサーバーからコマンドを実行したマシンへのtcp(httpではなく)トンネルが開かれます。ポート9000を使用していますが、IDEが別のXdebugポート用に構成されている場合、このポートを変更できます。
これはあなたが見るべきものです:
開かれたTCPトンネルのURLを確認する必要があります。この例では:
0.tcp.ngrok.io:14904
このセッションでは、サーバーのXdebug設定は次のようになります。
xdebug.remote_Host=0.tcp.ngrok.io
xdebug.remote_port=14904
URLとポートは、ngrokが起動されるたびに変更されます。同じURLとポートを使用する場合は、有料アカウントにアップグレードする必要があります。 php.iniに変更を加えた後、Apacheを再起動してください。
私は何時間もこのページやそれに似た他のページで多くの答えを読んでいたが、何が私の解決策になったのか誰も言及しなかった。
私の問題は、選択したポートが一致する必要がある3つの場所があることでした。私の2人が9001と言い、1人が9000と言いました。私はそれらをすべて9000に変更しました。
それが問題であり、Netbeansが「Waiting For Connection(netbeans-xdebug)」としか表示しない理由。
3つのポート設定場所は次のとおりです。
php.ini
(xdebug.remote_port=9000
)「windows」ファイアウォールの設定も確認してください。
私にとっては、LANネットワークが「パブリックネットワーク」として宣言されていたため、機能しませんでした。 「仕事用ネットワーク」に切り替えた後、問題なく機能しました。
これを追加すると私にとってはうまくいきました:
xdebug.idekey=netbeans-xdebug
私の場合、Apacheログには、date.timezoneが設定されていないというPHP警告が表示されました。 Xdebug/netbeansは、php.iniで設定してApacheを再起動するとすぐに機能し始めました。
date.timezone = America/Los_Angeles
これはPHP 5.5です。
Php iniで以下を追加すると、うまくいきませんでした
zend_extension_ts = "C:\ PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"
しかし、私が追加した場合
zend_extension = "C:\ PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"
正常に動作しています。
Php.iniファイル、netbeans、ルーターでのポート転送を正しく設定しても、「接続を待機中(netbeans-xdebug)」という悲惨な状況が続いていました。最終的にnetbeansページで「output_buffering = Off php.iniファイルで」。
そこで、/ etc/php/7.x/Apache2/php.iniファイルをチェックし、その値が4096であることを確認しました。したがって、output_buffering = Offをリセットし、動作しました!!!
メッセージが構成エラーではなく接続エラーであることを示しているため、これが誰かの助けになることを願っています。
Windowsでxamppを使用しており、php.iniの[XDebug]セクション(下部)を次のように変更して動作させています。
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_Host=localhost
xdebug.remote_port=9000
こちらのNetbeans wikiから入手: http://wiki.netbeans.org/HowToConfigureXDebug
Apacheを実行している場合は、XDebugを構成してphp.iniを保存した後、忘れずに再起動してください。
この問題はあるプロジェクトで発生しましたが、他のプロジェクトでは発生しませんでした。したがって、xdebugは正しく構成され、プロジェクトの設定は問題ありませんでしたが、まだ機能しませんでした。
そのため、プロジェクト設定を含むnbprojectサブディレクトリを削除し、既存のソースで新しいプロジェクトを作成しました。これで問題は解決しました。
私は同じ問題を抱えていて、何時間も解決しようとしました。最後に、ヘッダーを変更してプロキシを使用しているように見えるようにするchrome拡張ipflood
が原因であることがわかりました。
私はそれを無効にした後、それは完全に正常に動作します!
Php.iniファイルまたはxdebug.iniファイルに変更を加えた後、Webサーバーの実行方法に関係なく、そのWebサーバーを再起動してください(例:CentOSではservice httpd restart)または、Apacheはその.iniファイルに加えた変更を反映しません。
CentOSのxdebugパッケージは「phpXXu-pecl-xdebug」です。
通常、最新のXdebugsのデフォルトで問題ありません。 Apache .iniファイルのどこかに、これらの2つの値を正しく取得することのみが厳密に必要です。
xdebug.remote_enable=on
xdebug.remote_Host=[DNS entry that resolves to the IP4 of your debugger]
@Johnson T Aが正しいとはいえ、最適なセットアップとこれに答えるに値するものを得るために多くの時間を費やしました。
彼は言います
xdebug.remote_Host = 192.168.1.5-これはシステムのIPv4アドレスです。localhostと127.0.0.1でデバッグできなかったため、これに変更しました。
まあ、誰もがプライベートアドレスを使用できるわけではありません。ダイナミックアドレスなどでもかまいません。また、私の場合、デバッグが実際に開始される前に非常に長い待機時間に苦しんでいました-毎回30秒ほど。それは非現実的でした。
これらの問題を抱えている人は少なくともWindows 7の場合程度だと確信しています。この問題は、名前解決とxdebugの混在に関連しています。それらを克服するには、次のことを確認してください。
xdebug.remote_enable
がon
であることを確認してください。localhost
と127.0.0.1
の両方のアドレスを使用してデバッグできるようにするには、\Windows\System32\drivers\etc
を開いて、次の行があることを確認します。
127.0.0.1 localhost
最初の行の前に#がなく、2番目の行に#があることを確認してください。
作業中のphp.iniセクション(プロファイラーは必要ないので無効にしました):
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_Host = "localhost"
xdebug.remote_port = 9001
xdebug.trace_output_dir = "C:\xampp\tmp"
xdebug.remote_log = "C:\xampp\tmp\xdebug\xdebug.log"
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_autostart = on
xdebug.remote_connect_back = on
Netbeansデバッガーを停止します。 Apacheを再起動します。
長い待ち時間やデバッガの奇妙な動作に悩まされることはもうないでしょう。
説明:etc/hostsには「localhost名前解決はDNS自体で処理されます」と書かれていますが、何らかの理由で、そのファイルに明示的に記述されていない場合、xdebugではうまく機能しません。明示的に配置しても全体的に害はないようで、xdebugでこの問題を解決します。ただし、これがすべて機能するためには、localhost(:: 1)のsIPv6ショート表記を明示的に無効にする必要もあります。内部の理由はわかりませんが、すべての組み合わせをトライアッドします。これは私にとって魅力的なものです。
デバッグ用に特定のブラウザーを選択します。
同じ問題がありました。どうして?最初にWAMPをインストールし、Netbeansに感謝します。Netbeansは一緒に魅力的に機能します。後でXAMPPをインストールし、Localhostサイトはスムーズに実行されましたが、NetBeansはXAMPP(netbeans-xdebug)に接続できませんでした。同時に、NetBeansはWampとうまく機能していました。
私の解決策は、Wampに戻ることでした。何もないよりはましです。
私のPC:Win-7-32、NetBeans-8.0.2、
wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b
xampp-win32-5.6.8-0-VC11
Xdebugが正しく機能しない場合は、サーバーログを確認してください。
$ Sudo less /var/log/httpd/error_log
接続を確認するには、次のコマンドを使用します。
$ Sudo netstat -an
Netbeansでデバッグを開始した後、netstatコマンドを使用すると、xdebugのポート(おそらく80)を確認できます。
tcp6 0 0 192.168.33.10:80 192.168.33.2:49901 ESTABLISHED
Netbeansのポートは9000です。
tcp 0 0 192.168.33.10:52024 192.168.33.2:9000 ESTABLISHED
ここからxdebugのポートを変更できます(トップメニューから、[ツール]-> [オプション]-> [PHP]):
接続が確立されていない場合、アンチウイルスプログラムまたはファイアウォールによって接続がブロックされている可能性が高くなります。アンチウイルスプログラムまたはファイアウォールで確認し、安全な接続であるためブロックを削除できます。
コマンドウィンドウでphp -i
を開始することもできます。出力をリダイレクトすると、エラーが発生しました
私にとっては、間違ったバージョンのXdebugがダウンロードされたため、最終的なソリューションでした
私にとってはphp_xdebug-2.1.2-5.3-vc6.dll
しかし、私は持っていた:php_xdebug-2.2.4-5.3-vc9.dll
。そのため、php -i
からエラーが発生しました
E:\Programme\php>php -i > myOutputFromPhp
次のエラーを生成します
Xdebugをロードできません-実行中のエンジンがAPI220090626、TS、VC6であるのに対し、構成API220090626、TS、VC9でビルドされました
これを確認してください: 外部リクエストでNetbeansでXDebugを起動
別の方法は、新しいウィンドウを開くことです:
[プロジェクト]> [設定の実行]> [進む]
デフォルトに切り替えて、ブラウザで別のウィンドウが開くかどうかを確認します
Ubuntuユーザーの場合: