2013-03-01 84 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"