Remotedebugging mit xdebug und Netbeans unter Ubuntu

Um Debugging auf einem virtuellen Ubuntu-Webserver zu ermöglichen, bedarf es nur weniger Schritte.

1. Teil – xdebug einrichten

Im ersten Schritt, werden 2 Module benötigt:

sudo apt-get install php5-dev php-pear

Im nächsten Schritt wird xdebug installiert:

sudo pecl install xdebug

Falls noch nicht “make” installiert wurde, sollte man dies vorher nachholen :)

Der Installer meldet dann:

You should add "extension=xdebug.so" to php.ini

Man sollte sich aber nicht blenden lassen und dem einfach vertrauen (es geht nämlich nicht :) ). Deshalb suchen wir nach der “xdebug.so”, um die Extension als Zend-Extension in der php.ini einzutragen:

find / -name 'xdebug.so' 2 > /dev/null

#Ausgabe:
/usr/lib/php5/20090626/xdebug.so

Den gefundenen Pfad kopieren wir anschließend und bearbeiten die php.ini:

sudo vi /etc/php5/apache2/php.ini

In dieser Datei fügen wir folgende Parameter ein:

[xdebug]
; xdebug-ext
zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=[IP-ADRESSE des Clients, welcher Netbeans ausführt]
xdebug.remote_port=9000

Ausschlaggebend sind die Parameter:
zend_extension: der gefundene Pfad zur xdebug.so
xdebug.remote_host: Die IP-Adresse des Clients, welcher Netbeans benutzt Letztlich wird der Apache-Server neugestartet und Netbeans eingerichtet.

/etc/init.d/apache2 restart

2. Teil – Netbeans einrichten

Ein neues Projekt anlegen:

netbeans1

Pfad wählen (in diesem Beispiel ist das Laufwerk W: per Samba mit dem virtuellen Server{ Bsp.-IP-Adresse: 192.168.1.30 } verbunden):

netbeans2

Konfiguration abschließen

netbeans3

Unter Tools » Options » PHP noch die xdebug-Einstellung prüfen und es kann los gehen

netbeans4

Nachtrag:

Sollte folgende Meldung erscheinen, wenn man auf einen entfernten Rechner debuggt:

image

Es könnte die Windows-Firewall diesen Fehler verursachen. Daher sollte daher sicherstellen, das der gewählte Port in der Firewall freigeschalten ist, oder das Netzwerk im Heimnetzwerk befindet.