Dienstag, 5. August 2008

PHP-Modul nachträglich statisch einbinden

Nehmen wir an, wir haben eine tolle neue Erweiterung für PHP entdeckt und möchten diese ausprobieren. Wie bekannt ist, kann man diese "extensions" dynamisch oder statisch einbinden. Das nachträgliche Einbinden ist einfacher, wenn man es über den dynamischen Weg macht und eventuell auch sinnvoller, möchte man diese Erweiterung ersteinmal antesten.

Wir nehmen hierzu mal das XCache Modul. XCache ist ein opcode cacher. Ich werde auf das Thema in einem anderen Post nochmal eingehen. Aber kurz beschrieben: Jedes PHP Skript muss erst kompiliert werden, bevor es ausgeführt werden kann... Dieses Kompilieren findet bei jeder aufgerufenen PHP Datei statt. Hier greift ein opcode Cacher ein. Er speichert den kompilierten Code einfach in einem Zwischenspeicher, so dass bei den folgenden Aufrufen kein Kompilieren mehr notwendig ist. Ziemlich simpel, aber effektiv... daher ist es ein gutes Beispiel.

Um XCache nun als dynamische Erweiterung zu installieren geht man wie folgt vor:


#wget http://... (link zur quelle)
#tar xf xcache-*.tar.gz
#cd xcache
#phpize (oder phpize5)
#./configure --enable-xcache
#make
#make install
#cat xcache.ini >> /etc/php.ini

Dies sollte eine Datei namens xcache.so in das PHP Erweiterungsverzeichnis installiert haben. (nach "extension_dir" in der phpinfo gucken um das verzeichnis herauszufinden)
Apache bzw. PHP neustarten und das Modul sollte aktiv sein. Konfigurieren sollte es man natürlich auch noch in der php.ini.

Nun wollen wir aber - der besseren Performance wegen - das Modul statisch in PHP einbinden. Wie geht man da vor?

Wir wechseln in das "ext" unserers PHP Quellverzeichnisses... beispielsweise /root/php-5.2.6/ext/

#wget http://... (link zur quelle von xcache)
#tar xf xcache-*.tar.gz
#mv xcache-1.2.2 xcache
#cd xcache
#phpize (oder phpize5)

Nun gibts das verzeichnis /root/php-5.2.6/ext/xcache

Zurück ins Quellverzeichnis von PHP /root/php-5.2.6/

Wir müssen PHP nun zusammen mit der Erweiterung neu kompilieren (http://murksfurtz.blogspot.com/2008/08/schlankes-php-selbst-kompilieren.html)
dazu führen wir erstmal aus:

# make clean
# rm configure
# ./buildconf --force

nääät Fehlermeldung... jeht nich, weil unsere autoconf Version "zu neu" ist und diese mag PHP nicht (warum auch immer) ... also autoconf deinstallieren und die autoconf Version 2.1.3 installieren. Dies geht allerdings Problemlos (bei mir zumindest). Downloaden (http://www.gnu.org/software/autoconf/#downloading), entpacken, ./configure, make, make install, fertig.

jetzt nochmal

#./buildconf --force
#./configure --deine optionen... --enable-xcache
#make
#make install (vorher apache / php beenden)

Fertig. Wir haben das Modul nun statisch in PHP eingebunden. Falls in der php.ini noch keine Konfiguration für XCache vorhanden ist, einfach die Zeilen aus der xcache.ini aus dem xcache Quellpaket kopieren und in die php.ini einfügen.

XCache: http://xcache.lighttpd.net/

Keine Kommentare: