eclipse xdebug session never completes

PhpEclipseXamppXdebug

Php Problem Overview


I am trying to get xdebug working with eclipse (3.5) / php (on xampp windows 7). I have verified xdebug is enabled in php - I have the fancy output and my phpinfo shows all the xdebug stuff. I have remote debug on, and typed in the lan ip address on my eclipse machine.

When I tell eclipse to debug, it launches the browser and passes the debug URL parameters. That looks OK.

However, in eclipse debug perspective it shows 'launching myproject' 57% 'waiting for xdebug session'. It sits there forever.

I have turned off windows firewall on both machines.

I tried turning implicit flush on.

Any ideas?

Php Solutions


Solution 1 - Php

I had this problem too and I was missing this line in the php.ini file:

xdebug.remote_enable = On

Solution 2 - Php

Make sure you defined zend_extention with ABSOLUTE path in the php.ini:

e.g.: zend_extension=D:\SANDBOX\server\php\php_xdebug-2.1.0-5.3-vc6.dll

I'm debugging a local project on Windows. So far I did not need xdebug.remote_enable = On.

Suggestions if the Xdebug session does not start (hangs at 57 %), make sure that:

  • zend_extention directive is set with absolute path and the debug is loaded, use phpinfo() to check
  • firewall does not block the default 9000 port or Eclipse.
  • another application is not using the port (execute: netstat -an |find /i "listening" from the command line)

If you need to setup a different port use in php.ini:

xdebug.remote_enable = on
xdebug.remote_port = XXXX 

and correct the Xdebug settings in Eclipse:

XDEBUG settings in Eclipse

Solution 3 - Php

I had the same problem and I fixed it by changing the port to XDebug (now using port 9001).

Here is my php.ini content:

zend_extension ="C:\...\EasyPHP-5.3.3\php\ext\php_xdebug-2.dll"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.remote_mode=req
xdebug.remote_autostart=0

Also check the apache log file and make sure that you don't have the following Warning message:

PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0
Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0

If you do, open the php.ini file and comment with a ';' the extension=php_xdebug-2.dll line:

;extension=php_xmlrpc.dll
extension=php_xsl.dll
**;extension=php_xdebug-2.dll**
;/PHPExt

Solution 4 - Php

After fighting for 3 hours and trying out every solution on forums, I found out that the simple trick was to remove the quotes while specifying the path of the Xdebug dll in zend_extension in php.ini. I am using XAMPP (PHP 5.3.6 + Apache 2.2)+ Eclipse Indigo + PDT + Xdebug 2.1.2 on Windows Vista.

Here is the exact configuration that worked for me -

zend_extension=C:\xampp\php\ext\php_xdebug-2.1.2-5.3-vc6.dll
#Note that the path above is not in quotes
xdebug.remote_enable=true
xdebug.remote_host=localhost
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir=C:\xampp\tmp

I have used port 9001 so that it does not clash with 9000 in case that's already used by another program. Make sure this matches the port in Eclipse > Preferences > PHP > Debug > Xdebug too. Also, restart apache after editing php.ini.

Once I added this to php.ini, everything worked like ice cream.

Solution 5 - Php

I had the same problem with Zend Studio. I have noticed that the xdebug session was not starting properly. I passed this string to the url once and it worked since then.

http://localhost/myalias/?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=13750956767461

I'm sure it's a matter of configuration somewhere in the IDE.

Solution 6 - Php

I realized that TCP port was in use and that was the reason why it was hanging. I changed port in php.ini and eclipse settings.

Solution 7 - Php

Check that Eclipse's web browser settings are correct.

Window/Preferences/General/Web Browser/external Web Browsers/Edit settings

In my case, the path to the external web browser binary was incorrect. It said "/usr/bin/mozilla" instead of "/usr/bin/firefox". Don't know how this setting came about, but after changing it the firefox browser window came up at last.

Solution 8 - Php

I looked into apache log and there were many lines with file not found error.

> Run -> Debug configurations -> PHP web page -> Your_configuration

I unchecked auto generate and set filename to index.php.

It seems that in case of any mistake that prevents eclipse from normal functioning causes this "waiting for session"

Solution 9 - Php

I had the exact same problem. My configs were par with yours and in addition to having xdebug.remote_enable = On in the php.ini file also adding the following:

xdebug.remote_connect_back=1

this enables multihost remote debugging, as an alternative you can define the host IP.

xdebug.remote_host=IP_ADDRESS

Solution 10 - Php

For me, adding the [xdebug] configurations suggested by others to a php.ini file kept in following path C:\wamp64\bin\apache\apache2.4.23\bin helped. Essentially it's a symbolic link that points/links to phpForApache.ini file under your respective php version folder that gets installed with wamp64 e.g. php5.6.25.

In nutshell, adding following lines phpForApache.ini to helped me -

    zend_extension = c:\wamp64\bin\php\php5.6.25\ext\php_xdebug-2.5.1-5.6-vc11-x86_64.dll
    xdebug.remote_enable=On
    xdebug.remote_host="localhost"
    xdebug.remote_port=9000
    xdebug.remote_handler="dbgp"

Hope this helps

Solution 11 - Php

Yeah, check network/port stats. In my case I'm using vmware fusion on mac, and the process vmware-natd was hogging the cpu (blocking on an open port I'm assuming), which I didn't notice. php.ini was completely fine, had to run this to get it to work again:

sudo "/Library/Application Support/VMware Fusion/boot.sh" --restart

So ppl check your php.ini (or xdebug.ini) file first. If it looks ok ala this discussion, then check that you're not having networking issues.

Solution 12 - Php

I don't know this means to you anymore or not! But, did you hit to a PHP file (anything.php) with right debug parameter, something like XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=12882809194391.

People often make mistakes to hit a HTML file with the debug parameters which causes Eclipse to hang at xdebug session

Solution 13 - Php

I had a similar problem and it turned out I was using the wrong dll. Hope that helps someone in the future.

Solution 14 - Php

I had the same symptom. However, my problem was that I set xdebug.remote_host = "" I did this because I'm using apache virtual hosts to eliminate the need for localhost. However, I had change it back to xdebug.remote_host = "localhost" and then change my apache/etc/hpppd-vhosts.conf to have localhost point to my root c:\web.

Solution 15 - Php

For me, these symptoms were caused by the windows firewall (Win7 Pro). I needed to explicitly allow eclipse to pass the firewall. I did this via the dialog at "Control Panel\All Control Panel Items\Windows Firewall\Allowed Programs".

Solution 16 - Php

It might not be useful to everybody, but... when trying to debug remote hosts, always remember the DSL router! (or any router along the way) I spent hours trying to find a solution, when I noticed that all I had to do was to activate port forwarding (port 9000) on my Linksys and everything worked like a charm :)

Solution 17 - Php

  1. The above inputs were useful. I checked xdebug parameter values in phpInfo() and found that despite my settings to 1 or On, auto_trace and remote_enable were off. So i made it to true. And then remote worked!. Thanks.
  2. Note, now you can launch the remote debugging session from within Eclipse by configuring various Debug configurations OR/and whenever you launch your such configured application outside Eclipse, you will get a question at Eclipse to accept or not to accept the debug session. So if you are on a different machine than of the eclipse UI you might find that the call to your application is getting timed out for no reason. Actually there would be a yes - no dialog box wherever the Eclipse session is

Solution 18 - Php

If Netweaver/Eclipse fails to connect to XDebug, you may wish to check the Apache logs for occurrences of something like: Cannot load Xdebug - it was built with configuration API220090626,TS,VC6, whereas running engine is API220090626,TS,VC9 [Fri Jun 01 18:38:05 2012] [notice] Child 3404: Child process is running

To remedy this, pick the right version of the XDebug binary from the XDebug website (try a few combinations till you get it working)

Solution 19 - Php

This thread helped me sort out my issue with MAMP on OSX with Eclipse. After upgrading to MAMP 2.1.1 from the 1.x release, I was not able to get xdebug to work in eclipse. It was hanging at the 57% level.

phpinfo showed that xdebug extension was loading fine and there were no errors in the PHP or Apache logs.

I only wanted to debug locally but the reason for the issue was that remote debugging was not enabled. Adding xdebug.remote_enable=true to the MAMP PHP.ini template and restarting MAMP solved the issue.

Solution 20 - Php

In my case CLI application was working fine, but it was the web application which was getting stuck at 57%.

It worked after 2 changes:

  1. made server debugger as XDebug
  2. Auto Generate URL true.

Solution 21 - Php

Before eclipse setting, Check out the following content is visible in phpinfo function.

This program makes use of the Zend Scripting Language Engine: Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Solution 22 - Php

I too encountered the same problem. I double checked all the settings in php with the output of phpinfo() and everything was fine.

Allowing Java(TM) Platform SE binary through the firewall did the trick.

Check out the commands from this question, they are very useful for debugging!

Solution 23 - Php

I've tried every possible solution on this post to get xdebug to work on a site running on Apache (http port 8000) to no avail. I then accidentally noticed that xdebug was working on another site that I had running on port 80. As soon as I changed the other site to port 80, it finally allowed me to debug it.

I wonder if there's a setting that can direct Apache to allow xdebug on other ports than just 80. I have more than one site running in Apache and would like to debug each of them without having to reconfigure the ports. Anyone had this issue before? or knows how to fix it?

Solution 24 - Php

If your configuration is ok, just delete the file : YOUR_WORKSPACE/.metadata/.plugins/org.eclipse.core.resources/.root/.markers

Solution 25 - Php

Had same issue using Uniserver Zero XIII 13.2.0 (requires MS VC12 redistributable install) and Eclipse Neon Release Candidate 3(4.6.ORC3). Our website uses phalcon, when we found an issue with the phalcon.dll and php7.0 we dropped back to php5.6. We verified xdebug settings above, added zend_extension=$(US_ROOTF)/php56/extensions/php_xdebug.dll--would not connect, no break points.

Found a warning at top of Eclipse Dialog Project | Properties | PHP | Debug | Configure Workspace Settings... | PHP Executables | PHP56(Workspace Default) | Edit | Debugger | "XDebug extension is not installed. Please visit http://xdebug.org...";. This made us suspicious of the version of the php_xdebug.dll (2.5.0) in the Uniserver 13.2.0 php56. I downloaded php_xdebug-2.4.1-vc11.dll, dropped it in /php56/extensions and PRESTO! Eclipse PHP Debugger works!

Solution 26 - Php

Here is another blog which mentions how to verify if Xdebug is properly installed or not via the command line http://allcodeverything.blogspot.com/2012/07/code-debugging-with-xdebug-and-eclipse.html

It mentions this If you want to figure out if everything worked well, here is a nice piece of code that you'll run through the CLI (command-line interpreter, basically outside of Apache or a browser; just pure PHP) after you have typed the following in your browser: "http://localhost/dbgtest.php?XDEBUG_SESSION_START=ceable"

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

The command-line window should print something like "connection established: Resource id #5".

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionScott SzretterView Question on Stackoverflow
Solution 1 - PhpGoranView Answer on Stackoverflow
Solution 2 - PhpuicodedView Answer on Stackoverflow
Solution 3 - PhpmarcoView Answer on Stackoverflow
Solution 4 - PhpcloudwhaleView Answer on Stackoverflow
Solution 5 - PhpArtur KędziorView Answer on Stackoverflow
Solution 6 - PhpVelja RadenkovicView Answer on Stackoverflow
Solution 7 - PhpknbView Answer on Stackoverflow
Solution 8 - PhpMirView Answer on Stackoverflow
Solution 9 - PhpRyan LitwillerView Answer on Stackoverflow
Solution 10 - PhpSameer AwateView Answer on Stackoverflow
Solution 11 - PhplefnireView Answer on Stackoverflow
Solution 12 - PhpAbdul MunimView Answer on Stackoverflow
Solution 13 - PhpScott WarrenView Answer on Stackoverflow
Solution 14 - PhpJohn LittlefieldView Answer on Stackoverflow
Solution 15 - PhpSeth BattinView Answer on Stackoverflow
Solution 16 - PhpDuccioView Answer on Stackoverflow
Solution 17 - PhpnitishView Answer on Stackoverflow
Solution 18 - PhpnorootsquashView Answer on Stackoverflow
Solution 19 - PhpblainelangView Answer on Stackoverflow
Solution 20 - PhpNitin AgarwalView Answer on Stackoverflow
Solution 21 - Phpuser3336280View Answer on Stackoverflow
Solution 22 - PhpDaniel IancuView Answer on Stackoverflow
Solution 23 - PhpMaxRelaxView Answer on Stackoverflow
Solution 24 - PhpRipperView Answer on Stackoverflow
Solution 25 - PhpjthompsonView Answer on Stackoverflow
Solution 26 - Phppal4lifeView Answer on Stackoverflow