9

前文

何時間も経ちましたが、NetBeansをxdebugに接続することができませんでした。数か月前、古いバージョンのMAMPからMAMP PROにアップグレードした後、デバッグは問題なく機能しました。一週間前、それは薄っぺらになり始めました。接続しているように見えますが、ブレークポイントで停止しません。NetBeans(v7.0.1)とapacheを再起動すると、短時間動作することがありました。

本当に修正が必要だったので、最新バージョンのMAMP PRO(2.1.2)をインストールしました。これで、WaitingForConnectionメッセージが永久に表示されます。

私が行ったテスト

接続待ちのメッセージが移動バーとともに表示されている間、私はそれがリッスンしているかどうかを確認します。それは...

# lsof -i -n -P |grep 9001
java  6496  tim  230u  IPv6 0xffffff80239d8190      0t0    TCP *:9001 (LISTEN)

NetBeans php設定では、インタプリタを/Applications/MAMP/bin/php/php5.4.10/bin/phpに設定しています。

以下を実行します。

# /Applications/MAMP/bin/php/php5.4.10/bin/php -i | grep xdebug

xdebugがphpinfo()と同じように実行されていることを教えてくれます

私は(何度も)ポート番号がどこでも同じであることを確認しました。ポート9000と9001を試しました。

xdebug.logでテールを実行してから、NetBeansでデバッグセッションを開始せずにブラウザからセッションを開始すると、次のようになります。

I: Connecting to configured address/port: localhost:9001.
E: Could not connect to client. :-(

接続メッセージを待ってブラウザからセッションを開始すると、ログに次のように表示されます。

: Connecting to configured address/port: localhost:9001.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///Users/tim/MAMPSites/facts.tvd.us/htdocs/sendfile/tim.php" language="PHP" protocol_version="1.0" appid="7279" idekey="netbeans-xdebug"><engine version="2.2.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

私のphp.iniファイルには次のものがあります。

[xdebug]
zend_extension="/Applications/MAMP/bin/php/php5.3.20/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9001
xdebug.idekey="netbeans-xdebug"

アップデート

上記のlsofコマンドが、ipV6でリッスンしているNetBeansを示していることに気づきました。java(NetBeans)にipV4の使用を強制しても効果はありません。

launchctl setenv JAVA_TOOL_OPTIONS -Djava.net.preferIPv4Stack=true

xdebugが正しく機能していることを確認するためのテストを提案する投稿を見つけました。phpファイルを作成します。

<?php
$address = '127.0.0.1';
$port = 9000;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die('Unable to bind');
socket_listen($sock);
$client = socket_accept($sock);
echo "connection established: $client";
socket_close($client);
socket_close($sock);
?>

コマンドラインから実行し、URLの最後に次のようにブラウザの任意のページをロードします。

?XDEBUG_SESSION_START=nb

「接続が確立されました:リソースID#5」のような出力が表示された場合、xdebugは正しく機能しています。それで、JavaとNetBeansを再インストールしました。NetBeansに既存の設定をインポートしないように指示しました...それでも接続がありません。

Update2

Mac用のphpStormIDEをインストールしました。既存のMAMPとxdebugのセットアップでデバッガーを実行するのに十分なことを学びました。これは、問題がNetBeansにあることを確認していると思います。

この時点で、これを機能させることは不可能のようです。:(

4

4 に答える 4

8

私は同じことを尋ねて、この非常に良い答えを得ました:PHPで各行/行のブロック/メソッドの実行時間を追跡する方法は?、それに加えて、同じ内容で現在実行中の他の質問にもこの回答があります。

それに関するいくつかの追加のメモ(この問題に関する私自身の研究で他のSO投稿で収集したもの):

  1. ポートも9001である可能性があります(9000は機能しないが、一部の人には機能するようです)。
  2. PHPStorm IDEに切り替えることは、この問題を解決する真の代替手段です(PHPStormにはすでに完全に実行されているxdebugが含まれているため)。
  3. ウィザード( http://xdebug.org/wizard.php )を介してxdebugの新しいバージョンをダウンロードし、指示に従うと幸運になるかもしれません。
  4. ファイアウォールをオフにすると役立つ場合があります。
  5. php.iniに追加します:xdebug.idekey=netbeans-xdebug
  6. xdebug.iniファイルがあるかどうかを確認し、そのファイルにxdebug関連のphp.ini行を追加します。
  7. zend_extension行のコメントを解除する(つまり、最初にを削除する;)必要があるため、Xdebugが実際にロードされます。
  8. Xdebugがロードされていることを確認し、PHPファイルからphpinfo()を呼び出します(念のため)。
于 2013-07-22T10:26:39.443 に答える
5

Xdebugは、プロジェクトフォルダーにindex.phpファイルがある場合にのみ接続するため、ファイルがあることを確認してください。

于 2013-09-14T14:55:26.473 に答える
1

それは今私のために働きます。LAMPをインストールしました。私は上記のすべての回答に従って変更し、apache2を開始し、今は飛んでいます...私は幸せです...しばらくの間phpstormに切り替えることを考えましたが、再考しました...もう少し微調整します...etvoila。それは働いています。

これがphp.iniにあるものです

zend_extension = /usr/lib/php5/20121212/xdebug.so

xdebug.max_nesting_level = 250
xdebug.auto_trace=On
xdebug.remote_enable=On
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_log="/var/log/xdebug.log"
xdebug.trace_output_dir=/var/www/AMRO
xdebug.idekey="netbeans-xdebug"
于 2014-01-06T18:43:32.790 に答える
0

xamppで動作するnetbeansのクリーンなダウンロードとインストールで、ブレークポイントで停止しないことを除いてxdebugが動作しました。php.iniをxdebug.remote_enable=1(0から)に変更し、xdebugは期待どおりに機能しました!

于 2013-09-04T15:23:32.473 に答える