31
Mar/08
0

Installation von Xdebug mit PHP 5.2.x auf Ubuntu 7.10

Wie im Post mit der Linkliste zum Thema PHP Performance Tuning schon angedeutet, setze ich mich hin und wieder mit dem Tool XDebug und speziell mit der Profiling-Komponente auseinander. Da gerade mal wieder eine Installation von XDebug ansteht, habe ich die wesentlichen Schritte hier mal zusammengeschrieben.

Voraussetzung: Lauffähiger Apache2 mit aktueller PHP5 Version. In meinem Fall habe ich die Software einfach die DEB-Pakete installiert.

Es gibt mehrere Möglichkeiten xdebug zu installieren:

  • Vorkompilierte Module (Windows)
  • Download/Installation via PECL (PEAR/PECL)
  • Selbst kompilieren

Da ich auf dem System hier “noch” kein PEAR nutze, möchte ich es auch nicht für dieses eine Modul installieren. Ich habe mich also für das selbt kompilieren der aktuellen stabilen Version (2.0.2) entschlossen.

Bevor es aber losgehen kann, müssen die Programme phpize und php-config auf dem System vorhanden sein. Falls die Programme noch nicht installiert sind, können sie mit sudo apt-get install php5-dev nachinstalliert werden.

Jetzt können die Quellen von XDebug heruntergeladen und entpackt werden:

1
2
$ wget http://xdebug.org/link.php?url=xdebug202
$ tar xvzf xdebug-2.0.2.tgz

Anschließend in das soeben entpackte Verzeichnis wechseln und phpize aufrufen.

1
2
3
4
5
6
$ cd xdebug-2.0.2
$ phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

Diese Ausgabe weist darauf hin, dass xdebug für ein PHP in Version 5.2.x kompiliert wird. Wenn das passt, dann kann xdebug mit configure zum kompilieren vorbereitet werden.

1
./configure --enable-xdebug

Der Parameter bewirkt, dass XDebug im PHP aktiviert wird.

Sofern der obige Befehl keine Fehlermeldungen zur Folge hat, kann mit dem kompilieren fortgefahren werden.

1
2
3
4
5
6
7
8
$ make
(...)
----------------------------------------------------------------------
Libraries have been installed in:
/tmp/xdebug-2.0.2/modules
(...)
Build complete.
Don't forget to run 'make test'.

Jetzt sollten die im Unterverzeichnis modules die Datei xdebug.so liegen. Die Datei sollte an einem passenden Ort im System abgelegt werden – kann aber grundsätzlich überall liegen. Ich habe die Datei passenderweise in dasselbe Verzeichnis, wie die anderen PHP Module abgelegt (/usr/lib/php5/20060613+lfs).

1
2
3
$ sudo cp modules/xdebug.so /usr/lib/php5/20060613+lfs/
$ sudo chown root:root /usr/lib/php5/20060613+lfs/xdebug.so
$ sudo chmod 644 /usr/lib/php5/20060613+lfs/xdebug.so

Jetzt muss PHP noch beigebracht werden das Modul zu laden. Dazu habe ich unterhalb von /etc/php5/conf.d eine Datei xdebug.ini angelegt. Diese habe ich mit folgendem Inhalt befüllt:

1
2
$ sudo vi /etc/php5/conf.d/xdebug.ini:
zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so"

Anschließend muss der Webserver neu gestartet werden:

1
$ sudo apache2ctl -k restart

Jetzt kann man mit einem PHP-Script, welches die Funktion phpinfo() aufruft herausfinden, ob das Modul tatsächlich geladen wurde. Die Datei habe ich in www-root abgelegt:

1
$ sudo vi /var/www/info.php:

Jetzt habe ich http://127.0.0.1/info.php im Browser aufgerufen und nach xdebug gesucht. Und siehe da:

1
2
3
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with Xdebug v2.0.2, Copyright (c) 2002-2007, by Derick Rethans

Die Installation ist also abgeschlossen.

Jetzt geht es an die Konfiguration. Da für mich aktuell nur die Profiling-Funktionalität von xdebug interessant ist, gehe ich auch nur darauf ein. Ich habe nun noch in der zuvor angelegten PHP XDebugKonfigurationsdatei /etc/php5/conf.d/xdebug.ini folgende Zeilen angehängt:

1
2
3
4
5
6
; Disable profiling by default
xdebug.profiler_enable = 0
; Profiling can be enabled by XDEBUG_PROFILE GET/SET parameter
xdebug.profiler_enable_trigger = 1
; Path where the profiling informations are stored
xdebug.profiler_output_dir = /tmp/xdebug

Es muss darauf geachtet werden, dass /tmp/xdebug existiert und der Benutzer des Webservers darauf schreiben kann.

1
2
$ sudo mkdir /tmp/xdebug
$ sudo chmod 777 /tmp/xdebug

Nach einem erneuten Neustart des Webservers kann eine beliebige PHP-Seite mit dem zusätzlichen Parameter XDEBUG_PROFILE aufgerufen werden (z.B. http://127.0.0.1/info.php?XDEBUG_PROFILE).

Nachdem die Seite vom Webserver ausgeliefert wurde, wird im xdebug.profiler_output_dir, in meinem Beispiel also in /tmp/xdebug eine Datei mit dem Namen cachegrind.out.[pid] angelegt. Diese Datei enthält dann alle Profiling-Informationen über den Aufruf und die Verarbeitung der aktuellen Datei.

Demnächst schreibe ich dann noch etwas zu der Auswertung der Profiling-Informationen. Solange gibt es auf der Offiziellen XDebug-Seite noch einige Informationen über die Handhabung/Konfiguration der Profiler Funktion von XDebug.

Filed under: PHP
Comments (0) Trackbacks (0)

No comments yet.

No trackbacks yet.