How to Fix the Socket Exception in Wamp2.2 and Netbeans

So I have this setup going on:

  • Windows 8 64bits
  • Wamp 2.2
  • PHP 5.4.3
  • Apache 2.4.4
  • And by default Xdebug  2.2.0-5.4-vc9
  • Netbeans 7.2 

The normal setup that comes with the new WAMP 2.2. When I was trying to debug a simple drupal project I got the tipical please  configure you php.ini according to this:

[xdebug]
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remove_port = 9000

Nice, so I set up my PHP.INI  with the info above and start debuging again and BAM: Socket Exception on NetBeans with some instruction to disable watches. Thats the usuall stuff that netbeans tells when xdebug is not well configured.  So heres comes the solution:

Want to easily open up php.ini? Just leftclick your wampserver icon and navigate to it



THE MIGHTY SOLUTION:

1) Download the latest release of xdebug. Now you got to be very carefully chosing the adecuate file. In my case I downloaded : PHP 5.4 VC9 TS (64 bit).

Now, How do you choose the one?. Easy. The first part of the name is the version of PHP you use, so I have to choose those that start with PHP 5.4. Then comes the version of Visual Studio that this .dll has been compiled. Usually you got to choose the same one has your PHP and Apache have been compiled and for Wamp2.2 it is VC9. Now what about TS? TS means Thread Safe and for what I know is the one thats work well with newest apaches and phps. I downloaded another version (this one: PHP 5.4 VC9 (64 bit) , notice it doesnt say TS) that wasn't threat safe and I got the Netbeans message that It couldn't connect to the port.... so make sure is TS using my configuration above. Now dont forget the 64 bits part or 32bits part, its depend of the version of WAMP youre using.

2) Find this chain in your PHP.ini : zend_extension, comment it and add this one zend_extension = "c:/wamp/bin\php/php5.4.3/zend_ext/php_xdebug-2.2.3-5.4-vc9-x86_64.dll". And yes move your dowloaded xdebug to that address. And restart. 


 This is what's will look like your php.ini after the changes. Usually the xdebug info is at the bottom of your php.ini

3) Woalla, now youre debugging =).

3 comments:

Anonymous said...

Freaking Awesome! It Worked!!!

I had exactly the same problem and I have been all day trying to solve this. Thanks God you exists!

Just 2 things, the remove_port is, obviously, remote_port. And I had to add the following line: xdebug.idekey = "netbeans-xdebug"

Carlos Tamayo said...

Yes youre right!, didn't see that remove_port thingy, I will edit the image later. Hey, if you come back here, please tell me your Netbeans version. I didn't need the idekey parameter the last time.

Sérgio de Freitas said...

I'm using Netbeans 8 x64. The idekey value has to be the same defined in tools->options->php->debugging->Session ID field and it is netbeans-xdebug by default. cheers!