Smarty lokal unter Windows installieren
Nachdem ich mir XAMPP unter Windows bereits installiert hatte, sollte auch noch die Smarty Template Engine dazukommen. So geht’s:
Apache stoppen, Smarty hier downloaden, die Datei entzippen und den Ordner in "smarty" umbenennen.
Diesen Ordner am besten in das Verzeichnis verschieben, in dem auch XAMPP installiert ist; bei mir liegt dieser Ordner z.B. unter D:\programmierung\ und ich gebe diese Pfade im folgenden auch immer als Beispiel an. Liegt euer Server woanders, müssen die Pfade entsprechend angepasst werden.
Die in D:\programmierung\xampp\apache\bin\ liegende php.ini öffnen und nach include_path für Windows suchen, dort folgende Zeile einfügen:
include_path = ".;D:\programmierung\smarty\libs\"
Folgende Ordner neu anlegen:
– smarty im Root-Verzeichnis (bei mir also: D:\programmierung\xampp\htdocs\)
– templates und configs in diesem smarty-Verzeichnis (D:\programmierung\xampp\htdocs\smarty\)
– templates_c und cache im ausserhalb von xampp liegenden smarty-Verzeichnis (D:\programmierung\smarty\)
Eine index.php im Verzeichnis D:\programmierung\xampp\htdocs\smarty\ mit folgendem Inhalt erzeugen, dabei die Pfadangaben entsprechend anpassen:
<?php
// load Smarty library
require("D:/programmierung/smarty/libs/Smarty.class.php");
$smarty = new Smarty;
$smarty->template_dir = "D:/programmierung/xampp/htdocs/smarty/templates/";
$smarty->config_dir = "D:/programmierung/xampp/htdocs/smarty/configs/";
$smarty->cache_dir = "D:/programmierung/smarty/cache/";
$smarty->compile_dir = "D:/programmierung/smarty/templates_c/";
$smarty->assign("name","Babe");
$smarty->assign("meldung","es klappt!");
$smarty->display("index.tpl");
?>
Jetzt noch die erwähnte "index.tpl" erzeugen, die ins Verzeichnis D:\programmierung\xampp\htdocs\smarty\templates\ gehört:
<html>
<body>
Hallo {$name}, {$meldung}
</body>
</html>
Zum Schluss den Server wieder starten und die Datei "index.php" unter http://localhost/smarty/ aufrufen. Erscheint dort die Meldung Hallo Babe, es klappt!, dann hat die Installation von Smarty wohl hingehaun. ![]()
Nachtrag:
Sollte doch eine Fehlermeldung beim Aufruf der "index.php" erscheinen, dann stimmt etwas mit dem Pfad nicht.
Eine ganz andere mysteriöse Fehlermeldung ist mir bei der Installation von Smarty auf meinem Rechner untergekommen. Nachdem es auf dem Laptop mit dem exakt gleichen System problemlos geklappt hat, erschien dort plötzlich ein Parse Error. Nach langem Draufstarren, manchmal übersieht man ja einen kleinen Fliegendreck mit grosser Wirkung, bin ich letztendlich dahintergekommen, wo der Fehler lag. Und als ich statt der Hochkommas überall Anführungszeichen vergeben hatte, funktionierte es.
Normal sollten aber beide Alternativen verwendet werden können, warum es bei mir an dieser Stelle hakte, verstehe ich immer noch nicht. Tücken des Systems oder so.
Nachtrag 2:
So, nun sind alle Hochkommas gegen Anführungszeichen ersetzt; d.h. jetzt sollte der Code auch funktionieren, wenn er per Copy ‘n Paste eingefügt wird.
Geschrieben am 12.11.2005 um 22:49:21 Uhr in der Kategorie Fortgeschrittene, Tools, Feed: RSS 2.0. Sie können einen Kommentar schreiben.
Vielen Dank. Hat geklappt.
Obwohl ich weder ‘Experte’ noch ‘-in’ bin weiss ich worans liegt:
Das Blog-Script (höchstwahrscheinlichz ist dies der Schuldige) macht aus einem einfachen Hochkomma ein orthographisches Hochkomma. Dies kann php nicht interpretieren.
Gruß
FK
Nein, daran kann es – zumindest bei meiner Smarty-Installation nicht gelegen haben.
Dieser Blog-Eintrag entstand ja erst später, ich hatte für mein Smarty o.g. Code in einem stinknormalen PHP-Editor eingegeben, der ein “anständiges” Hochkomma setzt.
Aber ich werde hier noch einmal überarbeiten und Anführungszeichen setzen, das ist auf jeden Fall sicherer, falls jemand den Code hier rauskopiert, da hast du wohl recht.
Hallo Danke für die Anleitung finde ich super das es so etwas hier gibt DANKE!
und noch eine Sache hab genau die Gleiche Fehlermeldung wie Anonymous hab alles in (“) gesetzt und sehe da es geht
Spitze! Hat mir sehr weitergeholfen; hab es unter Linux installiert, wenn ich auch lange nach dem Pfad für die php.ini gesucht habe.
Hallo Ihr, habe alles wie so gemacht- bekomme aber immer diesen Fehler und weiss keinen Rat mehr- könnte mir einer von Euch helfen?
Fehler
Warning: require(D:/Programmierung/smarty/libs/Smarty.class.php) [function.require]: failed to open stream: No such file or directory in D:\Programmierung\xampp\htdocs\smarty\index.php on line 3
Fatal error: require() [function.require]: Failed opening required ‘D:/Programmierung/smarty/libs/Smarty.class.php’ (include_path=’.;D:\Programmierung\smarty\libs\’) in D:\Programmierung\xampp\htdocs\smarty\index.php on line 3
Vielen Dank
Hallo HiLa,
sorry, war in Urlaub und komme erst jetzt zum antworten.
Nach der Fehlermeldung scheint die Datei "Smarty.class.php" in dem angegebenen Ordner nicht vorhanden zu sein, kann das sein?
Grüsse, Martina
Super, bin genau so vorgegangen, und alles läuft wie geschmiert. Grossen Dank
Genial! Nach so einer Anleitung hab ich gesucht und es klappt auf Anhieb! Hut ab!
So die Anleitung stimmt!
Jedoch kann man sich die neue Zeile
include_path = “.;D:\programmierung\smarty\libs\”
sich sparen, bei der xampp installation wird schon ein include_path gesetzt,
die nun saubere art ein weiteren include_path hinzuzufügen,
wäre demnach das Simikolon und der weitere include_path
beispiel:
; Windows: “\path1;\path2″
include_path = “.;C:\Programme\xampp\php\pear\;C:\Programme\xampp\smarty\libs\”
desweiteren kann man sich die angabe von
$smarty->cache_dir = “D:/programmierung/smarty/cache/”;
$smarty->compile_dir = “D:/programmierung/smarty/templates_c/”;
mit einer einfachen änderung in der smarty.class.php
Von:
var $compile_dir = ‘templates_c’;
var $cache_dir = ‘cache’;
In:
var $compile_dir = ‘../smarty/templates_c’;
var $cache_dir = ‘../smarty/cache’;
Kann man die Standart Suchverzeichnisse außerhalb des htdocs Verzeichnisses in das Verzeichniss “smarty” legen.
Somit müssen in php code diese Verzeichnisse nicht mehr definiert werden.
Desweiteren kann man in der smarty.class.php auch die Standart Suchverzeichnisse der anderen beiden Ordner an seine Wünsche anpassen.
mfg Rick
Tolle Anleitung, danke
Es ist ebenfalls möglich, kanonische Pfade ohne Laufwerksbuchstaben anzugeben. Das bietet sich an, wenn man den xampp als portable Lösung von einem USB-Stick laufen lassen möchte. In meinem Fall liegt xampp dabei im Root des Sticks, smarty ist ein Unterverzeichnis von /xampp.
/xampp/apache/bin/php.ini:
include_path = “.;\xampp\smarty\libs\”
/xampp/smarty/libs/smarty.class.php:
var $compile_dir = ‘/xampp/smarty/templates_c’;
var $cache_dir = ‘/xampp/smarty/cache’;
/xampp/htdocs/smarty/index.php:
$smarty->template_dir = “/xampp/htdocs/frameworks/smarty/templates/”;
$smarty->config_dir = “/xampp/htdocs/frameworks/smarty/configs/”;
Grüße, Kay
Hi, ich habe alles der Anleitung nachgebastelt und habe jetzt folgendes Problem – Es erscheint die Fehlermeldung:
“Smarty::require_once(D:\Programme\smarty\libs\internals\core.write_compiled_resource.php) [function.Smarty-require-once]: failed to open stream: No such file or directory in D:\Programme\smarty\libs\Smarty.class.php on line 1432″
Die Datei core.write_compiled_resource.php scheint an der Stelle also nicht gefunden zu werden, allerdings ist diese jedoch vorhanden und auch am richtigen Platz.
Hat jemand ne Ahnung, woran das liegen könnte??
Danke und Grüße,
Simone
Gerade herausgefunden, wo der Fehler steckte:
Und zwar wird in der Datei “Smarty.class.php” die Konstante “SMARTY_CORE_DIR” wie folgt definiert:
define(‘SMARTY_CORE_DIR’, SMARTY_DIR . ‘internals’ . DIRECTORY_SEPARATOR);
Da es in meiner Smarty-Distribution den Ordner “internals” allerdings nicht gibt, muss diese Zeile in folgende umgeändert werden:
define(‘SMARTY_CORE_DIR’, SMARTY_DIR . DIRECTORY_SEPARATOR);
Allerdings ist die Tatsache, dass dieses Unterverzeichnis im “libs” Ordner nicht existierte auf einen Fehler bei Entpacken der Smarty-Zip-Datei zurückzuführen.
Grüße,
Simone
Habe folgenden Fehler:
Fatal error: Call to a member function display() on a non-object in C:\Programme\xampp\htdocs\smarty\index.php on line 11
Hallo,
Danke, das war die beste Installations-Beschreibung von Smarty, die im Netz gefunden habe.
Gruß Jörg
jooo das englische original ist ja voller fehler in den pfadangaben
danke
Hi,
danke für die detallierte Anleitung…..Hat alles einwandfrei geklappt
Meine Angaben sind ohne Müll wirklich wahr
=)
Ich habe bei der richtigen Anleitung nur den ersten Teil mit include nicht verstanden, weil das so doof da stand xDDD
Auf jeden Fall hats ja jetzt geklappt und alle sind Glücklich und ich freue mir gerade nen keks
MFG Dominik Schmauder
Vielen Dank, hat bei mir problemlos geklappt!!
Hi, danke für die super Anleitung! Hat alles einwandfrei geklappt.
Klappt einwandfrei!
Danke.
Einfach, kurz und verständlich, ausgezeichnete Anleitung gäbe es nur mehr solche Anleitungen im Netz.
Funktioniert alles einwandfrei.
Vielen Dank!!!
Hallo,
3x Hoch für diese Anleitung, denn “Babe, es klappt”.
Super!
Super!!!
Schnell, einfach und präzise.
Hallo,
Ich hab’s versucht, geht aber bei mir nicht, ich bekomme die folgende Nachricht:
Warning: Smarty error: unable to read resource: “index.tpl” in C:\smarty\libs\Smarty.class.php on line 1093
Wissen Sie vielleicht, was falsch ist? Ich habe XAMPP v. 1.7.0 unter Windows Vista, Smarty Distrib. 2.6.22.
Vielen Dank im Voraus.
Vielen Dank!
Sehr gut strukturierte, kurz und bündige Anleitung.
Hat prima geklappt!
lg
Demonknight
Habe Ihre Anleitung genau befolgt aber erhalte immer diese Fehlermeldung für die index.tlp.
“Warning: Smarty error: unable to read resource: “index.tpl” in C:\Programme\Smarty\libs\Smarty.class.php on line 1092″
Was habe ich falsch gemacht oder liegt es an der Version die ich verwende? Vers.2.6.22. Vielleicht kann mir jemand helfen. Herzlichen Dank Wolfgang
Hallo
Die Pfade sind wirklich der Schlüssel zum Erfolg.
Vielen Dank!
Danke für die leicht verständliche Anleitung!
lg
Demonknightslayer