73

IDE netbeans からプロジェクトをデバッグするために、xdebug を設定するのに助けが必要です。

これらは私のコンポーネントの機能です:

XAMPP 1.8.2

PHP: 5.4.16

ネットビーンズ: 7.3.1

アパッチ: 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 からプロジェクトをデバッグすると、「接続待ち (netbeans-xdebug)」と表示されます。

誰かがそれを設定するのを手伝ってくれますか? 非常に高く評価されます。

前もって感謝します。

4

23 に答える 23

119

問題を修正しましたか? そうでない場合は、これを試してください。

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 アドレスです。 と でデバッグできなかったので、これに変更しましlocalhost127.0.0.1

NetBeans IDE で、 を開きTools-> Options -> PHP -> Debuggingます。デバッガー ポートとセッション ID の値は、 で指定されたポートと idekey と一致する必要がありますphp.ini

php.ini を保存し、Apache を再起動してデバッグを試みます。

ありがとうジョンソン

于 2013-08-24T12:50:27.183 に答える
6

私は .Net プログラマーで、PHP は初めてです。最近、自分のマシン (Windows) でオープン ソースの PHP アプリケーションをホストしようとしていました。5〜6日間の闘争の後、私にとってうまくいった手順をリストします.

XAMPP と NetBeans の以前のインストールをすべてアンインストールし、新規インストールに進みました。

これはすべての人にとっての解決策ではないかもしれませんが、私にとってはうまくいきました。

  1. XAMPPをインストールする

  2. PHP 用の netbeans をインストールします。

  3. IIS を開いて停止します。デフォルトではポート 80 で実行されています。

  4. XAMPP コントロール パネルを開き、Apache を起動します。ポート 80 が空いている場合、問題は発生しません。

  5. ブラウザで localhost を開くと、XAMPP ホームページが表示されます。

  6. phpinfo()左ペインでリンクを開き、ページ上のすべてのコンテンツをコピーします。http://xdebug.org/wizard.phpに移動し、すべてのコンテンツを TextBox に貼り付けて、Analyze my phpinfo output をクリックします。構成に適した Xdebug ファイルが表示されます。

  7. 指定された Xdebug dll をダウンロードしてコピーしC:\xampp\php\extます (Xampp はデフォルトの Xampp インストール ディレクトリです)。

  8. XAMPP コントロール パネルに移動し、Apache の前にある Config ボタンをクリックして、 を選択しますphp.in

  9. 類似または完全に類似する行を検索し、

;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"
  1. 同様に行を見つける

    ;xdebug.remote_enable = 0;xdebug.remote_handler = "dbgp"

両方の行の前にあるセミコロンを削除して、remote_enable = 1

xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
  1. Apache サーバーを再起動します。

  2. C:/XAMPP/htdocs/(your_website)/ その下にウェブサイトのコードをコピーしてくださいindex.phpC:/XAMPP/htdocs/(your_website)/index.php

  3. Netbeans を開き、[新しいプロジェクト] -> [PHP] -> [既存のソースからの PHP プロジェクト] を選択し、htdocs フォルダーにコピーしたばかりのフォルダーを選択します。ローカル Web サーバーで実行するように設定します。

  4. index.phpand debugの最初の行にブレークポイントを設定します。

それでおしまい。

さまざまな投稿で追加の設定が提案されましたが、上記の手順は完全に機能しました。

于 2015-05-30T05:49:41.543 に答える
4

ここで xdebug.remote_host について言及したいと思います

xdebug.remote_host="127.0.0.1"

有効じゃない。場合によってはうまくいくかもしれませんが、引用符が問題を引き起こす可能性もあります。ほとんどの人は、IP アドレスを引用符で囲んで使用しても問題はありませんが、これは悪い前例になります。ホスト名または URL を使用する場合は、引用符で囲む必要があると思われます。これは正しくありません。引用符で囲まれた URL は機能しません。

URL を使用してデバッグする場合は、次のように等号の後に 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 サーバーを起動することをお勧めします。

これは、TCP サーバーを起動するための優れた無料の Java プログラムです: http://sockettest.sourceforge.net/

TCP サーバーの起動方法

[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 アドレスに接続してデバッグを開始すると、コンピューターではなくルーターにヒットするため、これは問題です。ルーターは、特定のポート番号を個々のコンピューターに渡すように構成できますが、ルーターの設定を元に戻すまでそのポートが開いているため、そうしたくない場合があります。

もう 1 つのオプションは、SSH を使用することです。ここにこれを行う方法の良い例があります:

私の好みのオプションは、Ngrokを使用することです。Ngrok は、http、https、および TCP トラフィックをリダイレクトするための優れたツールです。TCP リダイレクト機能を使用するには、無料のアカウントにサインアップする必要があります。

アカウントにサインアップし、API キーをコンピューターに追加したら、IDE がインストールされているコンピューターで次のコマンドを実行します。

ngrok tcp 9000

これにより、ngrok サーバーからコマンドを実行した任意のマシンへの tcp (http ではない) トンネルが開かれます。ポート 9000 を使用しています。IDE が別の Xdebug ポート用に構成されている場合は、このポートを変更できます。

これはあなたが見るものです:

Ngrok tcp トンネルが開いています

開かれた TCP トンネルの URL を確認する必要があります。この例では、次のとおりです。

0.tcp.ngrok.io:14904

このセッションでは、サーバーの Xdebug 設定は次のようになります。

xdebug.remote_host=0.tcp.ngrok.io
xdebug.remote_port=14904

ngrok を起動するたびに URL とポートが変わります。同じ URL とポートを使用する場合は、有料アカウントにアップグレードする必要があります。php.ini に変更を加えた後は、必ず apache を再起動してください。

于 2016-09-12T16:22:56.347 に答える
1

私は xampp を使用して Windows を使用しており、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 を保存した後、忘れずに再起動してください。

于 2014-11-18T10:20:45.053 に答える
1

私の場合、Apache ログには、date.timezone が設定されていないという PHP の警告が表示されました。Xdebug/netbeans は、php.ini に設定して apache を再起動するとすぐに動き始めました。

date.timezone = America/Los_Angeles

これは PHP 5.5 です。

于 2013-08-20T21:47:15.197 に答える
0

あるプロジェクトでこの問題が発生しましたが、他のプロジェクトでは発生しませんでした。したがって、xdebug は正しく構成され、プロジェクトの設定は問題ありませんでしたが、それでも機能しませんでした。

そのため、プロジェクト設定を含む nbproject サブディレクトリを削除し、既存のソースを使用して新しいプロジェクトを作成しました。これで問題は解決しました。

于 2015-12-14T15:40:12.990 に答える
0

Ubuntu ユーザーの場合:

  1. 須藤す
  2. apt-get インストール php5-dev php-pear
  3. pecl インストール xdebug
  4. find / -name 'xdebug.so' 2> /dev/null
  5. 次のようなものが返されます: /usr/lib/php5/20121212/xdebug.so
  6. vi /etc/php5/apache2/php.ini
  7. 次の行を追加します: zend_extension="/usr/lib/php5/20121212/xdebug.so"
  8. サービス apache2 の再起動
  9. IDE を再起動する
于 2015-05-15T07:36:08.127 に答える
0

これをチェックしてください:外部リクエストでNetbeansでXDebugを起動する


もう 1 つの方法は、新しいウィンドウを開くことです。

プロジェクト>実行構成>詳細に移動してみてください

デフォルトに切り替え、ブラウザで別のウィンドウが開くかどうかを確認します

于 2014-03-19T17:46:55.070 に答える
0

私は最適なセットアップを得るために多くの時間を費やしました.@Johnson T Aのものはほぼ正しいですが、これは独自の返信に値するものです.

彼は言う

xdebug.remote_host=192.168.1.5 - これは私のシステムの IPv4 アドレスです。localhost と 127.0.0.1 でデバッグできなかったため、これに変更しました。

ええと、誰もがプライベート アドレスを使用できるわけではありません。また、動的であったり、その他のものである場合もあります。また、私の場合、デバッグが実際に開始されるまでの待ち時間が非常に長く、毎回 30 秒ほどかかりました。それは非現実的でした。

これらの問題を抱えている人は、少なくともWindows 7かそこらを使用していると確信しています。この問題は、名前解決と xdebug の混在に関連しています。それらを克服するには、次のことを確認してください。

  • ポート 9000 は使用されていません。その場合は、php.ini と netbeans の両方で未使用のものに変更してください。
  • であることを確認してxdebug.remote_enableくださいon
  • localhost127.0.0.1アドレスの両方を使用してデバッグできるようにする場合は、開い\Windows\System32\drivers\etcて、次の行があることを確認します。

    127.0.0.1 ローカルホスト

    ::1 ローカルホスト

最初の行の前に # がなく、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 デバッガーを停止します。アパッチを再起動します。

長い待ち時間やデバッガーでの奇妙な動作に悩まされることはもうないでしょう。

説明: etc/hosts では、「localhost の名前解決は DNS 自体で処理されます」と記載されていますが、何らかの理由で、そのファイルに明示的に記載されていない場合、xdebug ではうまく機能しません。明示的に配置しても全体的に害はないようで、xdebug でこの問題を解決します。ただし、これをすべて機能させるには、ローカルホスト (::1) の sIPv6 短縮表記を明示的に無効にする必要もあります。内部の理由はわかりませんが、すべての組み合わせを試してみると、これは魅力のように機能します。

于 2015-05-28T10:30:56.630 に答える