2.2. Basis Installation
 | Technische Bemerkung |
|---|
| | Dieser Leitfaden geht davon aus, dass Sie Ihr Webserver- und PHP-Setup kennen
und mit den Namenskonventionen für Dateien und Verzeichnisse Ihres Betriebssystems
vertraut sind. Im Folgenden wird ein Unix-Dateisystem verwendet, stellen Sie also
sicher, dass sie die für Ihr Betriebssystem nötigen Änderungen vornehmen.
Das Beispiel geht davon aus, dass '/php/includes' in Ihrem PHP-'include_path'
liegt. Konsultieren Sie das PHP-Manual für weiterführende Informationen hierzu.
|
Installieren Sie als erstes die Smarty-Library Dateien. Diese Dateien
sollten von Ihnen NICHT editiert und von allen Applikationen
verwendet werden. Sie werden nur erneuert, wenn Sie eine neue Version von Smarty installieren.
 | Technische Bemerkung |
|---|
| | Wir empfehlen keine Änderungen an den Smarty-Library Dateien vorzunehmen.
Dies macht ein mögliches Upgrade wesentlich einfacher. Sie müssen
diese Dateien auch nicht anpassen, um Smarty zu konfigurieren! Benutzen Sie für
diesen Zwecke eine Instanz der Smarty-Klasse.
|
Folgende Library Dateien werden mit Smarty geliefert und werden benötigt:
Beispiel 2-1. Smarty-Library Dateiliste
Smarty.class.php
Smarty_Compiler.class.php
Config_File.class.php
debug.tpl
/core/*.php (alle)
/plugins/*.php (alle) Sie können diese Dateien entweder in Ihrem PHP-'include_path' oder
auch in irgend einem anderen Verzeichnis ablegen, solange die Konstante
SMARTY_DIR auf den korrekten
Pfad zeigt. Im Folgenden werden Beispiele für beide Fälle aufgezeigt.
So erzeugt man eine Instanz der Smarty-Klasse im PHP-Skript:
Beispiel 2-2. Smarty Instanz erstellen:
require('Smarty.class.php');
$smarty = new Smarty; Versuchen Sie das Skript auszuführen. Wenn Sie eine Fehlermeldung erhalten dass
Smarty.class.php nicht gefunden werden konnte, versuchen Sie folgendes:
Beispiel 2-3. Absoluter Pfad übergeben
require('/usr/local/lib/php/Smarty/Smarty.class.php');
$smarty = new Smarty;Beispiel 2-4. Library Verzeichnis dem Include-Pfad hinzufügen
// editieren Sie php.ini, fügen Sie das Smarty
// Verzeichnis Ihrem include_path hinzu, und starten Sie den Webserver neu
// Danach sollte folgendes Funktionieren.
require('Smarty.class.php');
$smarty = new Smarty;Beispiel 2-5. SMARTY_DIR manuell setzen
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty; Jetzt, wo die Library Dateien an ihrem Platz sind, wird es
Zeit, die Smarty Verzeichnisse zu erstellen.
Für unser Beispiel werden wir die Smarty Umgebung für eine
Gästebuch-Applikation konfigurieren. Wir verwenden den Applikationsnamen
nur, um die Verzeichnis-Struktur zu verdeutlichen. Sie können die selbe
Umgebung für alle Ihre Applikationen verwenden indem Sie 'guestbook'
durch dem Namen Ihrer Applikation ersetzen.
Stellen Sie sicher, dass Sie die DocumentRoot Ihres Webservers kennen.
In unserem Beispiel lautet sie '/web/www.domain.com/docs/'.
Die Smarty Verzeichnisse werden in den Klassen-Variablen $template_dir,
$compile_dir, $config_dir und $cache_dir definiert. Die Standardwerte sind:
"templates", "templates_c", "configs" und "cache". Für unser Beispiel
legen wir alle diese Verzeichnisse unter '/web/www.domain.com/smarty/guestbook/' an.
 | Technische Bemerkung |
|---|
| | Wir empfehlen, diese Verzeichnisse ausserhalb der DocumentRoot anzulegen,
um mögliche Direktzugriffe zu verhindern.
|
In Ihrer DocumentRoot muss mindestens eine Datei liegen, die für Browser
zugänglich ist. Wir nennen dieses Skript 'index.php', und legen
es in das Verzeichnis '/guestbook/' in unserer DocumentRoot.
 | Technische Bemerkung |
|---|
| | Bequem ist es, den Webserver so zu konfigurieren, dass 'index.php' als
Standard-Verzeichnis-Index verwendet wird. Somit kann man das Skript
direkt mit 'http://www.domain.com/guestbook/' aufrufen. Falls Sie Apache
verwenden, lässt sich dies konfigurieren indem Sie 'index.php'
als letzten Eintrag für DirectoryIndex verwenden. (Jeder Eintrag muss
mit einem Leerzeichen abgetrennt werden).
|
Die Dateistruktur bis jetzt:
Beispiel 2-6. Beispiel der Dateistruktur
/usr/local/lib/php/Smarty/Smarty.class.php
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty/Config_File.class.php
/usr/local/lib/php/Smarty/debug.tpl
/usr/local/lib/php/Smarty/plugins/*.php
/usr/local/lib/php/Smarty/core/*.php
/web/www.mydomain.com/smarty/guestbook/templates/
/web/www.mydomain.com/smarty/guestbook/templates_c/
/web/www.mydomain.com/smarty/guestbook/configs/
/web/www.mydomain.com/smarty/guestbook/cache/
/web/www.mydomain.com/docs/guestbook/index.php | Technische Bemerkung |
|---|
| | Falls Sie kein Caching und keine Konfigurationsdateien verwenden, ist es nicht
erforderlich die Verzeichnisse '$config_dir' und '$cache_dir' zu erstellen.
Es wird jedoch trotzdem empfohlen, da diese Funktionalitäten eventuell später
genutzt werden sollen.
|
Smarty benötigt Schreibzugriff auf die Verzeichnisse '$compile_dir' und '$cache_dir'.
Stellen Sie also sicher, dass der Webserver-Benutzer (normalerweise Benutzer 'nobody' und Gruppe 'nogroup')
in diese Verzeichnisse schreiben kann. (In OS X lautet der Benutzer normalerweise 'www' und
ist in der Gruppe 'www'). Wenn Sie Apache verwenden, können Sie in der httpd.conf (gewöhnlich in '/usr/local/apache/conf/')
nachsehen, unter welchem Benutzer Ihr Server läuft.
Beispiel 2-7. Dateirechte einrichten
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/templates_c/
chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/
chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/ | Technische Bemerkung |
|---|
| | 'chmod 770' setzt ziemlich strenge Rechte und erlaubt nur dem Benutzer 'nobody'
und der Gruppe 'nobody' Lese-/Schreibzugriff auf diese Verzeichnisse. Falls Sie
die Rechte so setzen möchten, dass auch andere Benutzer die Dateien lesen
können (vor allem für Ihren eigenen Komfort), so erreichen Sie dies mit 775.
|
Nun müssen wir die 'index.tpl' Datei erstellen, welche Smarty laden soll.
Die Datei wird in Ihrem '$template_dir' abgelegt.
Beispiel 2-8. Editieren von /web/www.mydomain.com/smarty/guestbook/templates/index.tpl
{* Smarty *}
Hallo, ! | Technische Bemerkung |
|---|
| | {* Smarty *} ist ein Template-Kommentar. Der wird zwar nicht benötigt,
es ist jedoch eine gute Idee jedes Template mit einem Kommentar zu versehen.
Dies erleichtert die Erkennbarkeit des Templates, unabhängig von der
verwendeten Dateierweiterung. (Zum Beispiel für Editoren die Syntax-Highlighting
unterstützen.)
|
Als nächstes editieren wir die Datei 'index.php'. Wir erzeugen eine
Smarty-Instanz, weisen dem Template eine Variable zu und geben 'index.tpl' aus.
Beispiel 2-9. Editieren von /web/www.mydomain.com/docs/guestbook/index.php
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = '/web/www.mydomain.com/smarty/guestbook/templates/';
$smarty->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/';
$smarty->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
$smarty->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/';
$smarty->assign('name','Ned');
$smarty->display('index.tpl'); | Technische Bemerkung |
|---|
| | In unserem Beispiel verwenden wir durchwegs absolute Pfadnamen zu den
Smarty-Verzeichnissen. Falls '/web/www.mydomain.com/smarty/guestbook/' in
Ihrem PHP-'include_path' liegt, wäre dies nicht nötig. Es ist jedoch
effizienter und weniger fehleranfällig die Pfade absolut zu setzen.
Und es garantiert, dass Smarty die Templates aus dem geplanten Verzeichnis lädt.
|
Wenn Sie 'index.php' nun in Ihrem Webbrowser öffnen, sollte 'Hallo, Ned!' ausgegeben werden.
Die Basis-Installation von Smarty wäre somit beendet.