netbeans shows "Waiting For Connection (netbeans-xdebug)"
Asked Answered
W

25

73

I need help to configure xdebug, for debugging projects from IDE netbeans.

These are the features of my components:

XAMPP 1.8.2

PHP: 5.4.16

netbeans: 7.3.1

Apache: 2.4.4 (Win32)

this is the final part of my php.ini file:

 [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"

when I run phpinfo(), there is no xdebug installed, and when I debug a project from netbeans, it says "Waiting For Connection (netbeans-xdebug)".

can someone help me to configure it?

Willettawillette answered 12/7, 2013 at 11:16 Comment(6)
Are the any errors in the PHP error log? Or the Apache log? Seems like PHP hasn't registered the extension which is why Netbeans can't connect.Agrology
hi, thanks for repling. How can i register the extension in netbeans?Willettawillette
when I run phpinfo() it shows me thato xdebub is not installed.. why??Willettawillette
are there any errors in the PHP log or Apache log? They should help diagnose why xdebug has not been registered in PHP.Agrology
Just solved!!! I downloaded the right version of xdebug, and now it wirks fine. Thanks for your replies!!!Willettawillette
I spent a little time to debug this and finally found that the issue was that when netbeans launches xdebug it goes to HTTP://LOCALHOST?XDEBUG_SESSION_START=netbeans-xdebug and there was an htaccess that messed with redirect. So changing host to HTTP://LOCALHOST/index.php resulted in getting it to work. So HTTP://LOCALHOST/index.php?XDEBUG_SESSION_START=netbeans-xdebugRimini
B
120

Have you rectified the issue ? If not then please try this.

1.) php.ini file content

[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 - This is the IPv4 address of my system, I changed to this because I couldn't debug with localhost and 127.0.0.1.

in NetBeans IDE, open Tools-> Options -> PHP -> Debugging. The values of debugger port and Session Id should match with the port and idekey specified in php.ini.

Now save php.ini, restart Apache and try to debug.

Thanks Johnson

Beasley answered 24/8, 2013 at 12:50 Comment(11)
Very useful answer! I search around for 3 hours. "xdebug.remote_host=192.168.1.5 - This is the IPv4 address of my system, I changed to this because I couldn't debug with localhost and 127.0.0.1." was the solution. I use Win 7 Prof.Haupt
This worked for me as well, with xdebug.remote_host = 127.0.0.1Doormat
This configuration was great to have. I commented out the ip address change though, and just left it localhost which worked great. I think i just needed the idekey setup.Belted
Commenting out ;xdebug.remote_connect_back=1 did it for me. I'm on Mac OS.Demoss
I had to reboot Netbeans to make this solution work.Headmost
The first line of this answer helped me to find out what my IPv4 (what we write in xdebug.remote_host) is: askubuntu.com/a/604691/179541Buran
My IP address is 192.168.1.27. I tried "xdebug.remote_host=192.168.1.27" instead of "xdebug.remote_host=127.0.0.1", but it did not work for me. I still experience the same problem: "Waiting For Connection (netbeans-xdebug)" never ends.Odessa
Absolutely the correct answer. I used the Xdebug custom install page to get the correct dll, then followed along above. Xdebug now running.Alvar
If some one still has issue please visit Xdebug Wizard page for windows, it will provide you .dll according to your web server and php version. xdebug.org/wizard.phpIngroup
@JérômeVerstrynge haha you made my day. I spent a hour on searching the problem. But the only thing that helped was restarting NetBeans. Thank you!!!!!!!!Duffie
The issue, for me, started when going to xdebug v3. The only values I needed were: xdebug.mode=debug and xdebug.client_port=9000Berke
B
11

When Netbeans starts a Debugging session, it starts two Listeners, one on 0.0.0.0:9000 (all IPv4 IPs the system has), and the other on the IPv6 interface.

If Netbeans and the Web Server are on the same system, ideally XDebug would be configured to send the data back to 127.0.0.1:9000, on which NetBeans would be listening on (and only per session)...

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

If for whatever reason XDebug is not able to report back to 127.0.0.1, or Netbeans is not listening on 127.0.0.1, you can configure XDebug to send the data back to the $_SERVER['REMOTE_ADDR'] of the original request...

xdebug.remote_connect_back=1

This way you don't have to specify the exact IP (i.e., as in the above answer the LAN IP: 192.168.1.5). The downside here is that any source can connect.

If you have further trouble, this...

xdebug.remote_autostart=1

... will also start the debugging process for all requests, and not just for the ones with the proper session start query or cookie. The downside here is that all requests will initiate debug data collection and reporting back (making everything slower, and generating more data).

Though from what I've gathered, the majority of these "Waiting For Connection (netbeans-xdebug)" issues on Windows (with XAMPP, Wamp-Server, etc) are usually a result of Windows Firewall and McAfee (or other firewall and anti-virus software) blocking the connection...

Source: Netbeans "Waiting For Connection (netbeans-xdebug)" Issue

Barnette answered 16/12, 2014 at 21:33 Comment(2)
Using "xdebug.remote_connect_back=1" did not solve the problem for me.Odessa
if anyone still has problems - check ports which are being listened for. For me it happened that Netbeans despite being set to listen on 9000 - it wasn't. It was shown that it listening on different one - but after close up - it wasn't still. Changing netbeans debugger port setting and xdebug.remote_port for a shiny new one helped :)Cochin
G
6

I am a .Net programmer and very new to PHP. Recently I was trying to host an open source PHP application on my machine(Windows). After the Struggle for 5-6 days I will list the steps which worked for me.

I uninstalled every previous installations of XAMPP and NetBeans and proceeded with fresh installations.

This might not be the solution for everyone but it worked for me and I hope it helps someone.

  1. install XAMPP

  2. install netbeans for PHP.

  3. Open IIS and stop it. It is running on port 80 by default.(I am running XAMPP on port 80 i.e. default, Running on other port might need additional configuration settings)

  4. Open XAMPP control panel and start Apache. If port 80 is free no problem should arise.

  5. Open localhost in browser in should display XAMPP home page.

  6. open phpinfo() link on the left pane and copy all the contents on page. Go to: http://xdebug.org/wizard.php and paste all the content in TextBox and click Analyze my phpinfo output. It will diplay you the Xdebug file suitable for your configuration.

  7. Download the given Xdebug dll and copy it in C:\xampp\php\ext (Xampp being the default Xampp installation directory)

  8. Goto XAMPP control panel, click on Config button in front of Apache and select php.in,

  9. Find line similar or exacly like,

;zend_extension = "C:\xampp\php\ext\php_xdebug.dll"

(Semicolon means it is commented)

Remove the semicolon and replace the path with the path of dll you just copied like:

zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll"
  1. Similarly find lines

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

remove semicolons in front of both lines and make remote_enable = 1

xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
  1. Restart Apache server.

  2. Copy your website code under C:/XAMPP/htdocs/(your_website)/ that means your index.php should be at C:/XAMPP/htdocs/(your_website)/index.php

  3. Open Netbeans select New project -> PHP -> PHP project from existing source and select the folder you just copied in htdocs folder. Set it to run on Local web server.

  4. Set a breakpoint on first line of index.php and debug.

That's it.

Additional settings were suggested on various different posts but above mentioned steps worked perfectly for me.

Gadolinium answered 30/5, 2015 at 5:49 Comment(0)
R
4

I want to mention something here about xdebug.remote_host

xdebug.remote_host="127.0.0.1"

Is Not valid. It may work in some cases, but the quotes can also cause issues. Most people don't have issues when using IP addresses in quotes, but this sets a bad precedent. It makes people think that if you want to use a hostname or URL you need to put it in quotes. This is incorrect, urls in quotes will not work.

If you want to debug using a url, you can do this by just putting the url after the equals like this:

xdebug.remote_host=subdomain.mydomain.com

I also want to mention that if you have a port number, don't add it. This doesn't work:

xdebug.remote_host=subdomain.mydomain.com:9000

This is what you want to do:

xdebug.remote_host=subdomain.mydomain.com
xdebug.remote_port=9000

If you do this, I also caution you make sure remote_connect_back is disabled. Like this:

xdebug.remote_connect_back=0

or you can ommit it entirely, like this:

;xdebug.remote_connect_back=1

If remote_connect_back is enabled, it will try and pull your IP address from the incoming connection and ignore the remote_host and port setting.

Xdebug uses plain old TCP to make connections. This is not HTTP. This means tools like Fiddler will not show any packets or information on debugging. If you need to debug, and see if the server is making a call to your IDE there are a few ways you can go about checking.

Wireshark will allow you to see TCP traffic. Also if you are on Windows, Microsoft Message Analyzer can also monitor TCP.

But, if all you are trying to do is remove your IDE is a possible cause of remote debugging problems, I suggest instead you start a local TCP server.

This is a great free java program to start a TCP server: http://sockettest.sourceforge.net/

How to start a TCP Server

In the IP Address section, just list 127.0.0.1 or leave it at 0.0.0.0. Then list the port number, which is usually defaulted to 9000 for xdebug.

Once the TCP server is running, open your remote webpage with an xdebug_break(); function call in it. This will tell xdebug on the remote server to start debugging on whatever server and port you listed in your php.ini.

Watch the socket server and see if you get a connection. The first data sent should look something like this:

<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">

If you have made it this far, remote debugging is working! Just stop the server and setup your IDE to listen on that port!


If you are like most of us, your developer machine is behind a router with NAT. This means that everyone in your office has the same public IP address. This is a problem because when xdebug contact that IP address to start debugging, it hits the router, and not your computer. The router can be configured to pass certain port numbers to individual computers, but you may not want to do that as that port will be open until you change your router settings back.

Another option is to use SSH. There is a great example of how to do this here: http://stuporglue.org/setting-up-xdebug-with-netbeans-on-windows-with-a-remote-apache-server/#attachment_1305

My preferred option is to use Ngrok. Ngrok is a great tool for redirecting http, https and TCP traffic. In order to use the TCP redirect function you need to sign up for a free account.

Once you have signed up for an account, and added your API key to your computer run this command on the computer that your IDE is on:

ngrok tcp 9000

This will open a tcp (not http) tunnel from the ngrok server to whatever machine you ran the command on. I am using port 9000, you can change this port if your IDE is configured for a different Xdebug port.

This is what you should see:

Ngrok tcp tunnel open

You will need to see what the url is for the TCP tunnel that was opened. In this example it is:

0.tcp.ngrok.io:14904

For this session, the Xdebug setting on your server should be this:

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

The URL and port will change each time ngrok is launched. If you want to have the same url and port, you have to upgrade to a paid account. Make sure to restart apache after you make changes to your php.ini.

Rebba answered 12/9, 2016 at 16:22 Comment(0)
W
3

I just spent hours reading so many answers on this page and others like it, and nobody mentioned what ended up being the solution for me:

Make Sure Your Chosen Port Settings Match in All 3 Locations

My problem was that there are THREE places that the chosen port needs to match. Two of mine said 9001 and one said 9000. I changed them all to 9000.

That was the problem and why Netbeans would only say “Waiting For Connection (netbeans-xdebug)”.

The 3 port setting locations are:

  • php.ini (xdebug.remote_port=9000)
  • project properties > Run Configuration > Advanced
  • Netbeans > Tools > Options > PHP > Debugging
Wigging answered 20/1, 2017 at 16:25 Comment(6)
where are the 'project properties'?Bellinzona
@Bellinzona In your "Projects" panel/window/frame (which is probably already visible but can also be opened via Window > Projects), right-click your project and choose Properties. If my answer and comment help you, I'd appreciate a vote :-)Wigging
the port in 'project properties' was 9001. I set it to 9000 but it kept reverting back to 9001, so I set the others to 9001 but no joy with the connectionBellinzona
@Bellinzona What error message are you seeing, or what are you experiencing? And have you proven that the php.ini that you edited is actually the one being used in this case? E.g. there is sometimes a php.ini that gets used for CLI (command line) and a different one for other cases. You could post a StackOverflow question with lots of details and then link to it here so I see it.Wigging
I use the xampp control panel to access php.ini (it is in c:\xampp\php\php.ini). If I edit it from the directory it is the same file. The error message is the same as the title of this post i.e. "waiting for connection (netbeans-xdebug)". I will post a question.linkBellinzona
Thanks for your help. I eventually got there. See the link in my previous comment.Bellinzona
H
2

Check also the "windows" firewall settings.

For me it doesn't worked because my LAN network was declared as "Public network". After i switched it to "Work network" it worked fine.

Hellfire answered 12/7, 2014 at 8:59 Comment(0)
O
2

Try this setting if you have latest version of Xdebug the old version syntax has been changed

https://xdebug.org/docs/upgrade_guide

xdebug.mode=debug
xdebug.start_with_request = Yes
    ;xdebug.mode=profile
    ;xdebug.start_with_request=trigger
    xdebug.client_host = "localhost"
    xdebug.client_port = 9003
    xdebug.remote_handler = "dbgp"
    xdebug.log = "C:\xampp\tmp\xdebug\xdebug.log"
    xdebug.trace_output_dir = "C:\xampp\tmp"
Oliana answered 12/2, 2021 at 9:48 Comment(0)
M
1

In my case the Apache log showed a PHP warning about not having set date.timezone. Xdebug/netbeans began working as soon as I set it in php.ini and restarted apache.

date.timezone = America/Los_Angeles

This is PHP 5.5.

Madcap answered 20/8, 2013 at 21:47 Comment(0)
I
1

I'm on Windows with xampp and changed the [XDebug] section of my php.ini (at the bottom) to the following to get it working:

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

Sourced from the Netbeans wiki here: http://wiki.netbeans.org/HowToConfigureXDebug

If you have Apache running, remember to restart it after configuring XDebug and saving php.ini.

Inhibition answered 18/11, 2014 at 10:20 Comment(0)
G
1

Adding this did work for me:

xdebug.idekey=netbeans-xdebug   
Gadget answered 25/2, 2015 at 9:9 Comment(0)
S
1

I my case if I add following in php ini it did not work

zend_extension_ts="C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"

But If I add

zend_extension="C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"

It is working fine.

Smear answered 4/6, 2016 at 7:42 Comment(0)
W
1

Having correctly set up the php.ini file, netbeans, port forwarding on the router, I was still getting the wretched "waiting for connection (netbeans-xdebug). I eventually noticed on the netbeans page "Do not forget to set output_buffering = Off in your php.ini file".

So I checked the /etc/php/7.x/apache2/php.ini file and sure enough it's value was 4096. So I reset output_buffering=Off and lo it worked !!!

Hope this helps someone, as the message implies it is a connection error rather than a configuration error.

Watt answered 3/3, 2017 at 17:11 Comment(0)
A
0

check this out: Launch XDebug in Netbeans on an external request


another way is to open a new window:

try to go on Project > run configuration > advance

and switch to default, check if it opens another window in the browser

Apodal answered 19/3, 2014 at 17:46 Comment(0)
M
0

A try could be to start php -i in command window. When redirecting the output an error was

For me it was the FINAL solution because I had a wrong version of Xdebug downloaded

For me it should have been : php_xdebug-2.1.2-5.3-vc6.dll

But I had: php_xdebug-2.2.4-5.3-vc9.dll. So an error occurred from php -i

E:\Programme\php>php -i > myOutputFromPhp

yields following ERROR

Cannot load Xdebug - it was built with configuration API220090626,TS,VC9, whereas running engine is API220090626,TS,VC6

Maelstrom answered 7/4, 2014 at 8:55 Comment(0)
F
0

I had the same problem. why? First I installed WAMP, thank Netbeans and they work together as a charm. Later I installed XAMPP and Localhost sites were run smoothly but NetBeans could never connect to XAMPP (netbeans-xdebug). At the same time NetBeans were working good with Wamp.

My solution was to go back to Wamp. It is better than nothing.

My 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

Flurry answered 14/5, 2015 at 0:14 Comment(0)
J
0

For Ubuntu users:

  1. sudo su
  2. apt-get install php5-dev php-pear
  3. pecl install xdebug
  4. find / -name 'xdebug.so' 2> /dev/null
  5. it will return something like: /usr/lib/php5/20121212/xdebug.so
  6. vi /etc/php5/apache2/php.ini
  7. add this line: zend_extension="/usr/lib/php5/20121212/xdebug.so"
  8. service apache2 restart
  9. restart IDE
Jadwiga answered 15/5, 2015 at 7:36 Comment(0)
P
0

I spent a lot of time trying to get the optimal set up and thing this deserves its own reply, even though @Johnson T A's one it's almost correct.

He says

xdebug.remote_host=192.168.1.5 - This is the IPv4 address of my system, I changed to this because I couldn't debug with localhost and 127.0.0.1.

Well, not everybody can use a private address, or it may be dynamic, or other things. Also, in my case I was suffering from very long wait times before debugging actually started - 30 s or so every time. That was unpractical.

I'm sure everyone having these problems are at least on Windows 7 or so. The problem is related to a mix between name resolution and xdebug. To overcome them make sure that:

  • Port 9000 is not in use. If that's the case, change it to a unused one, both in php.ini and in netbeans.
  • Make sure that xdebug.remote_enableis on.
  • If you want to be able to debug using both localhost and 127.0.0.1 addresses, open \Windows\System32\drivers\etc and make sure that there you have the following lines:

    127.0.0.1 localhost

    ::1 localhost

Make sure that the first line doesnt have a # before it and the second one does have it.

My working php.ini section (I don't need profiler so I disabled it):

[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

Stop netbeans debugger. Restart Apache.

I bet you won't suffer from long waiting times anymore nor strange behaviour with debugger.

Explanation: Althought in etc/hosts they say "localhost name resolution is handled within DNS itself", for whatever reason it doesn't work well with xdebug if you don't have it explicitely stated in that file. Explicitly putting it seems to do no harm overall, and solves this problem with xdebug. But also you need to explicitly disable the sIPv6 short notation for localhost (::1) in order for all this to work. Don't know the internal reasons but triead all the combinations and this one works for me like a charm.

Pitchford answered 28/5, 2015 at 10:30 Comment(0)
H
0

I had this issue for one project, but not for others. So xdebug was correctly configured, the project settings were ok, but it still did not work.

So I just deleted the nbproject subdirectory, containing the project settings, and created a new project with the existing source. This solved the issue for me.

Hammering answered 14/12, 2015 at 15:40 Comment(0)
B
0

Select a specific browser for debugging:

  1. Right Click on project -> select Properties
  2. Select categories: Browser then selected a specific browser for debugging
Beshore answered 30/3, 2016 at 5:3 Comment(0)
F
0

If your xdebug is not working correctly, check your server log:

$ sudo less /var/log/httpd/error_log

To check connections, use this command:

$ sudo netstat -an

After starting debug on netbeans, if you use the netstat command, you can see the port of xdebug (probably it's 80):

tcp6       0      0 192.168.33.10:80       192.168.33.2:49901      ESTABLISHED

The port of netbeans is 9000:

tcp        0      0 192.168.33.10:52024    192.168.33.2:9000       ESTABLISHED

You can change the xdebug's port from here (From the top menu, Tools -> Options -> PHP): enter image description here

If the connection is not established, it is highly possible that your connection is blocked by your anti-virus program or firewall. You can check it in your anti-virus program or firewall and remove the block as it is a safe connection.

Flasket answered 30/12, 2017 at 15:15 Comment(0)
O
0

After you make changes to your php.ini or xdebug.ini files, regardless of how you're running your web server, make sure to restart that web server (for example: service httpd restart on CentOS) or Apache will not pick up the changes you've made to that .ini file.

The xdebug package on CentOS is "phpXXu-pecl-xdebug".

Defaults on most recent Xdebugs are usually fine. It's only strictly necessary to get these two values right, somewhere in an Apache .ini file:

xdebug.remote_enable=on
xdebug.remote_host=[DNS entry that resolves to the IP4 of your debugger]
Onitaonlooker answered 10/3, 2018 at 3:27 Comment(0)
P
0

I had the same problem and tried to solve it for hours. I finally found out that the chrome extension ipflood which changes the headers to make it look like you are using a proxy, was the cause.

It works perfectly fine after I disabled it!

Pennant answered 11/4, 2018 at 20:18 Comment(0)
K
0

Also, consider whether the NTS or the TS version of xdebug is suitable for your case. Check the Apache log for hints

Kor answered 27/5, 2021 at 9:26 Comment(0)
A
0

For Windows users this is what worked for me:

  1. Obtain your phpinfo() output and copy it here: https://xdebug.org/wizard

  2. It will tell you what is the exact dll you have to download.

  3. Copy that dll into C:\xampp\php\ext, and rename it to php_xdebug.dll

  4. Pay attention at the version of xdebug you have installed. That was the key for me! My version of xdebug was version 3 so I had to...

  5. Update php.ini file to have the following (for xdebug v3):

    [XDebug]
    zend_extension = xdebug
    xdebug.mode=debug
    xdebug.client_host=localhost
    xdebug.client_port=9000
    xdebug.idekey="netbeans-xdebug"

  6. Restart Apache Webserver and Netbeans.

Abomb answered 4/11, 2022 at 19:25 Comment(0)
Q
0

What helped in my case was to change the browser in my PHP project. It was "Chrome with Netbeans Connector". When I changed that to "Chrome", debugging worked as it should.

Questionnaire answered 21/8, 2023 at 11:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.