* For Remote Web Server configuration Xdebug must be properly configured on remote server (not on local one)

* For Remote Web Server configuration Xdebug must be properly configured on remote server (not on local one)

-

:* you need to have correctly configured property xdebug_remote.host on remote machine. The IP address of local machine has to be defined in this property. For example, you want to debug your source code on remote machine 192.168.0.1 using Netbeans installed on 192.168.0.2. You need to change xdebug.remote_host on 192.168.0.1 to xdebug.remote_host=192.168.0.2. If doesn't work verify you have port configured in xdebug.remote_port open on both machines.

+

:* you need to have correctly configured property xdebug_remote.host on remote machine. The IP address of local machine has to be defined in this property. For example, you want to debug your source code on remote machine 192.168.0.1 using Netbeans installed on 192.168.0.2. You need to change xdebug.remote_host on 192.168.0.1 to xdebug.remote_host=192.168.0.2. If doesn't work verify you have port configured in xdebug.remote_port open on both machines.

+

* sometimes, [http://blogs.sun.com/netbeansphp/entry/path_mapping_in_php_debugger Path Mapping] must be used

Overview

This document describes the installation of xdebug. There are separate sections for Linux and Windows users. However, the information in How to on Linux may be interesting for Windows users as well. Please send your comments to users@php.netbeans.org if you have any comments or questions.

Important note for WAMP: xdebug configuration (below) must be added in WAMP's apache-directory php.ini (e.g. C:\wamp\bin\apache\Apache.x.y.z\bin\php.ini), otherwise it won't be loaded by Apache. Thus configured, it will work in NetBeans, but if you experience "call to unidentified function" in the debug window, add the xdebug configuration to C:\wamp\bin\php\php.a.b.c\php.ini as well.

Xdebug configuration is either inside php.ini or in another ini file often called xdebug.ini - this ini file is then shared between both configurations (Script and Local Web Server)

Xdebug is incompatible with the Zend Optimizer and Zend Studio Debugger extensions. These extensions should be commented out. See user's comment:

alternative Ubuntu files layout (xdebug configuration is in xdebug.ini shared between both configurations. If this is your case then you better add related directives to xdebug.ini. See article Xdebug On Ubuntu):

folder ext is used for extension and we used it to copy xdebug's dll there. However, you can use whatever folder you want.

download xdebug from http://www.xdebug.org/download.php. Carefully choose version you download! There is a description you should read on download page! I downloaded php_xdebug-2.0.4-5.2.8.dll for WAMP2 with prerequisities above. Consult our FAQ at the end of this page if you need more help on choosing a version.

NOTICE: From PHP 5.3 onwards, you need to use zend_extension and not zend_extension_ts.

note that you always use zend_extension_ts unless you intentionally installed non thread safe apache version

restart WAMP services (restart Apache is enough)

open localhost (or WAMP server default page) and check if xdebug is between Loaded Extensions

click on phpinfo() on default WAMP page or create file containing <? phpinfo() ?>. You should see the same as for Linux tutorial above:

You can check your configuration using simple script written by Radek Matous and posted on blog.sun.com. If you are using WAMP then you don't have php on path, most probably. All you have to do is to copy this code to php file and then call it from browser with $_GET variable in url ?XDEBUG_SESSION_START=mysession. Let's say your file i called dbgtest.php and it's in web directory. All you have to do is type http://localhost/dbgtest.php?XDEBUG_SESSION_START=mysession.

If xdebug is properly installed then script started in step 1. should print message like "connection established: Resource id #5". If no message is printed and the script is still running, then xdebug isn't installed properly or uses different port or whatever else. So, kill the running process and investigate where the problem is, but this is the other story.

Troubleshooting

if something goes wrong then check your PHP Error Log that you can find after invoking WAMP context menu from system tray

e,g,: WAMP icon -> PHP -> Error Log

Probably typo or file was not found if you see this:

PHP Warning: PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.2.9-1/ext/php_xdebug-2.0.4-5.2.8.dl'
- The specified module could not be found.
in Unknown on line 0

You downloaded wrong version of php.ini if you see following:

PHP Warning: PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.2.9-1/ext/php_xdebug-2.0.4-5.3.0-vc9.dll' -
The application has failed to start because its side-by-side configuration is incorrect.
Please see the application event log for more detail.
in Unknown on line 0

Do NOT use XAMPP 1.7.0. If you set up XDebug as described here, the Apache server crashes when you run or debug a file or project. The workaround prevents the IDE from stopping at breakpoints. XAMPP 1.7.1 is fine, with XDebug 2.0.4 VC 5.2 thread-safe.

try to check Apache Error Log as well.

Enable Xdebug logging

by adding into php.ini: xdebug.remote_log=/log_path/xdebug.log (see http://www.xdebug.org/docs/all_settings)
the content of log is in /log_path/xdebug.log (this path is just an example, for Windows something like: C:\... &&
xdebug must be writable )

Enable NetBeans PHP debugger logging

helpful is to turn on the debugger-related logging and attach the log into Issuezilla as well.
See following simple steps:

Running NetBeans with logging turned on. You can do this by:

either adding the text:-J-Dorg.netbeans.modules.php.dbgp.level=400 to your $NB_BIN/etc/netbeans.conf, property netbeans_default_options
or running NetBeans directly with those parameters, like: $NB_BIN/bin/netbeans -J-Dorg.netbeans.modules.php.dbgp.level=400

When NetBeans starts up, reproduce the bug, so it is logged into the log files.

Then file a new issue (click this link) and attach (or just send me directly):

Remote Debuging

For Remote Web Server configuration Xdebug must be properly configured on remote server (not on local one)

you need to have correctly configured property xdebug_remote.host on remote machine. The IP address of local machine has to be defined in this property. For example, you want to debug your source code on remote machine 192.168.0.1 using Netbeans installed on 192.168.0.2. You need to change xdebug.remote_host on 192.168.0.1 to xdebug.remote_host=192.168.0.2. If doesn't work verify you have port configured in xdebug.remote_port open on both machines.

FAQ

what version of Xdebug should I download?

Xdebug has a simple rule for choosing a version of xdebug extension youneed to download: "The Windows binaries generally work for every mini release for the mentioned PHP version, althoughthe extension is built against the most current PHP version at that time. The VCx marker tells with which compiler the extension was built, and Non-thread-safe whether ZTS was disabled. Those qualifiers need to match the PHP version you're using."

You need to get answers on few simple questions, firstly
1. whats your version of php?
there are more ways to find this out
either

2. Do I need Non Thread Safe or Thread Safe version?
non-threaded use of PHP" for example the CLI, CGI or Apache 1.3 module
threaded usage of PHP, for example the Apache 2 work MPM or the the ISAPI module

My Thread Safety is apparently disabled so I don't need thread safe version. If you use Windows you most probably need thread safe version .

And that's it! Go to Xdebug download page and download appropriate file. I need veersion marked as 5.2. and NonThreadSafe.

How to build Xdebug (useful for php5.3)

Ubuntu

If you build your php5.3 from sources then the best way how to get stable xdebug to your Ubuntu is to build it. Well, building from sources can be tedious but building xdebug is pretty easy process. So, let's get started. I am using Karmic Koala release of Ubuntu.