Ich hatte mich vor einigen Tagen aus aktuellem Anlass damit beschäftigt, wie ich PEAR unter der Confixx-Oberfläche nutzen kann, da es nicht standartmäßig aktiviert ist. Das Problem ist dabei, dass alle vhosteinträge von Confixx regelmäßig überschrieben werden, weshalb ein einfaches Ersetzen nicht ausreicht. Meine Annahmen:

  • Debian 3.1 Sarge Stable auf dem neuesten Packetstand
  • Confixx 3.1.2
  • PEAR ist in /usr/share/php/ installiert
  • Zugriff auf die Kommandozeile
  • Zugriff auf Confixx-Administrationsoberfläche

Zunächst muss man also PEAR installieren, was unter Debian recht einfach mit: apt-get install php4-pear zu bewerkstelligen ist. Weitere Pear-Klassen lassen sich dann einfach mit einem Kommandozeilenbefehl nach installieren. (Probieren sie doch einfach mal “pear help” in der Kommandozeile). Evtl blogge ich mal noch dazu ;)

Doch wenn man nun versucht eine Klasse von PEAR einzubinden, wenn man Confixx an hat, dann wird man erstmal kräftig auf den Bauch fallen. Confixx erlaubt (mit Hilfe von open_basedir) leider nur bestimmte Pfade unter denen Dateien überhaupt inkludiert werden können. Das PEAR-Verzeichnis (in Debian normlerweise /usr/share/php/ muss also nun verfügbar gemacht werden, was direkt über “httpd Spezial” im Adminmenü von Confixx heraus geschehen kann. Diese Möglichkeit ist relativ einfach, man öffnet einfach die gewünschte Domain oder Benutzer (Menüpunkt “httpd Spezial” im Confixx Administrationspanel und fügt folgendes ein:

1
2
3
php_admin_value open_basedir /var/www/##user##/html/:/var/www/##user##/phptmp/:/var/www/##user##/files/:/var/www/##user##/atd/:/usr/share/php
php_admin_value include_path .:/usr/share/php
php_admin_value safe_mode_include_dir /usr/share/php

Hierbei ist /var/www/ das Standartverzeichnis, was bei einer Confixx-Installation vergeben wird, der genaue Wert steht in der confixx_main.conf oder settings.inc.php von Confixx unter der Variable $user_homeDir

Erklärung: Die Open_Basedir Einstellung wird auf das PEAR-Verzeichnis erweitert, sodass von dort Dateien zu inkludieren sind. Damit php diese auch findet muss in der zweiten Zeile der PEAR-Path zu den Include-Paths hinzugefügt werden. Die dritte Zeite wird nur benötigt, wenn der Safe-Mode AN ist, da die PEAR-Files normalerweise einem anderen Benützer gehören.

Bei mir hats so funktioniert ;) Wie kann man das jedoch testen? Ganz einfach. Browsen sie doch ein bisschen in dem Klassen-Repository von PEAR und nehmen sie eine beliebige Klasse heraus. Ich habe mir z.b. DB (normalerweise immer installiert) ausgewählt. Nun muss man nach dem Klick auf das Package einfach auf “Documentation” und dann “End-user Documentation” klicken. Nun kann man eine Einführung in das Package lesen, viele Beispiele erläutern wie es funktioniert. Nach einem Klick auf “Introduction - Connect” kommt man z.b. zu einer einfachen Datenbank verbindung. Alles eben gut dokumentiert.

Greetz Uli