Setting up debugging locally on one machine (both Netbeans and xdebug on the same host) is easy enough. However, if you want to connect Netbeans to a xdebug over to a guest virtual machine, it will require a bit of work, but not hard. My host machine is Windows 7 and running a CentOS virtual machine inside VirtualBox. The following was what I did to get it running. Firstly I installed C and C++ compilers, which comes in the “Development Tools”
$ sudo yum groupinstall 'Development Tools'
then I installed php-devel which would give me phpize (which is required by pecl when installing xdebug)
$ sudo yum install php-devel
Now I was ready to install xdebug:
$ sudo pecl install xdebug
Once that was done, I updated php.ini file to enable xdebug. Find the xdebug section in php.ini file, if no, create one section for it under /etc/php.ini


xdebug.remote_enable  = On
xdebug.remote_host    =
xdebug.remote_port    = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode    = req

xdebug.remote_connect_back = On
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_log = /tmp/xdebug.log
You will need to find the path to file by running:
find / -name
Yours might be different from mine. Now I was ready to enable xdebug in Netbeans, which was running on the host machine (Windows 7 in my case). Under Tools > Options > PHP > Debugging:
Debugger Port: 9000
Session ID: netbeans-xdebug
Under Project Properties (right click on project root in the Project window) > Run Configuration: Run as: Local Web Site (running on local web server) Project URL: http://localhost:8080/ Index file: index.php (I have setup port forwarding from 8080 on my localhost to port 80 on my virtual machine) Under Project Properties > Run Configuration > Advanced Debug URL: Default: http://localhost:8080/index.php Path Mapping: Server Path: /path/to/project/in/guest Project Path: /path/to/project/in/host/ That’s it, now I am able to start setting break points and press Ctrl + F5 to start debugging in Netbeans over the virtual machine.

Leave a Reply

Your email address will not be published. Required fields are marked *