Mar/080
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.



























