2013-03-01 83 views
8

序言等待連接(於NetBeans的XDebug)MAMP OS X

後幾個小時,我一直無法得到的NetBeans連接到Xdebug的。幾個月前,從老版本的MAMP升級到MAMP PRO後,調試工作完美無缺。一週前它開始變得瘋狂。它似乎會連接,但不會停在斷點處。重新啓動NetBeans(v7.0.1)和apache有時可以在短時間內運行。

我真的需要它,所以我安裝了最新版本的MAMP PRO(2.1.2)。現在我永遠得到等待連接消息。

測試我做過

雖然正在等待連接的消息是沒有與移動吧,我看,看它是否在聽。這是...

# 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()

我有(多次)證實了我的端口號到處都一樣。我已嘗試上xdebug.log然後發起從所述瀏覽器會話,而無需啓動在NetBeans調試會話端口9000和9001。

做一個尾生產:

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命令顯示的NetBeans監聽IPV6。強制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); 
?> 

運行它,在你的瀏覽器在網址的結尾以下加載任何頁面:

?XDEBUG_SESSION_START=nb 

如果輸出類似「建立連接:資源ID#5「,xdebug工作正常。爲此,我重新安裝了Java和NetBeans。我告訴NetBeans不要導入我現有的首選項...仍然沒有連接。

UPDATE2

我安裝了phpStorm IDE的Mac。我足夠了解它,讓我們現有的MAMP和xdebug安裝程序運行調試器。我認爲這證實了NetBeans的問題。

在這一點上,得到這個工作似乎是不可能的。 :(

+1

我的最終解決這個問題......我已經完全切換到phpStorm。使用它幾天後,它似乎是一個更好的IDE(在我看來)。調試只是「有效」。 – 2013-03-04 03:10:34

+0

這裏完全一樣!我試圖用netbeans安裝xdebug 2周,然後我放棄並切換到PHPStorm(在Windows7 btw上)。完美開箱即用。有時候,付出好的軟件是值得的。 – Sliq 2013-07-18 19:38:42

回答

7

我問了同樣的事情,得到了這個相當不錯的答案:How to track execution time of each line/block of lines/methods in 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()(只是可以肯定)。
+1

謝謝。在php.ini中添加'xdebug.idekey = netbeans-xdebug'對我來說是神奇的。 – 2014-05-12 11:32:26

+0

添加xdebug.idekey = netbeans-xdebug也解決了我與NetBeans的問題。而且我還安裝了PHPStorm,但不幸的是它沒有預安裝XDebug,並且需要很多額外的步驟,並且仍然無法執行調試。雖然它是非常棒的IDE,但每年我花費將近150美元,但我預計它可以直接使用,或者以最少的設置工作,但事實並非如此。現在我將與NetBeans保持聯繫。 – zeeshan 2016-11-25 23:05:07

0

關於乾淨的下載和安裝netbeans在xampp上工作,xdebug工作除了不會停在斷點處。將php.ini更改爲:xdebug.remote_enable = 1(從0開始)和xdebug按預期工作!

5

Xdebug只會在您的項目文件夾中存在index.php文件時連接,因此請檢查以確保您有一個。

+0

你說得對。如果只有index.html,它將不起作用 – ironbone 2014-04-09 16:29:53

1

它現在適用於我。我安裝了LAMP。我根據上面的所有答案進行了修改,開始apache2,現在它過得很快......我很高興......有一段時間我以爲切換到phpstorm,但我重新考慮......稍微調整一下...... et voila。它正在工作。

這裏是我在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"