Smarty lokal unter Windows installieren

| 30 Kommentare

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:programmierungxamppapachebin liegende php.ini öffnen und nach include_path für Windows suchen, dort folgende Zeile einfügen:
include_path = ".;D:programmierungsmartylibs"

Folgende Ordner neu anlegen:
smarty im Root-Verzeichnis (bei mir also: D:programmierungxampphtdocs)
templates und configs in diesem smarty-Verzeichnis (D:programmierungxampphtdocssmarty)
templates_c und cache im ausserhalb von xampp liegenden smarty-Verzeichnis (D:programmierungsmarty)
 

Eine index.php im Verzeichnis D:programmierungxampphtdocssmarty 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:programmierungxampphtdocssmartytemplates 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. emoticon
 

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. emoticon 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.

30 Kommentare

  1. Klappt einwandfrei!

    Danke.

  2. Hi, danke für die super Anleitung! Hat alles einwandfrei geklappt.

  3. Vielen Dank, hat bei mir problemlos geklappt!! :-)

  4. Hi,

    danke für die detallierte Anleitung…..Hat alles einwandfrei geklappt ;)

    Meine Angaben sind ohne Müll wirklich wahr :D =)

    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 :P

    MFG Dominik Schmauder

  5. jooo das englische original ist ja voller fehler in den pfadangaben :D

    danke

  6. Hallo,

    Danke, das war die beste Installations-Beschreibung von Smarty, die im Netz gefunden habe.

    Gruß Jörg

  7. Habe folgenden Fehler:
    Fatal error: Call to a member function display() on a non-object in C:Programmexampphtdocssmartyindex.php on line 11
    :(

  8. 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

  9. Hi, ich habe alles der Anleitung nachgebastelt und habe jetzt folgendes Problem – Es erscheint die Fehlermeldung:

    “Smarty::require_once(D:Programmesmartylibsinternalscore.write_compiled_resource.php) [function.Smarty-require-once]: failed to open stream: No such file or directory in D:ProgrammesmartylibsSmarty.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

  10. 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 = “.;xamppsmartylibs”

    /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

  11. So die Anleitung stimmt!

    Jedoch kann man sich die neue Zeile

    include_path = “.;D:programmierungsmartylibs”

    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:Programmexamppphppear;C:Programmexamppsmartylibs”

    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

  12. Genial! Nach so einer Anleitung hab ich gesucht und es klappt auf Anhieb! Hut ab!

  13. Super, bin genau so vorgegangen, und alles läuft wie geschmiert. Grossen Dank

  14. 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

  15. 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:Programmierungxampphtdocssmartyindex.php on line 3

    Fatal error: require() [function.require]: Failed opening required ‘D:/Programmierung/smarty/libs/Smarty.class.php’ (include_path=’.;D:Programmierungsmartylibs’) in D:Programmierungxampphtdocssmartyindex.php on line 3

    Vielen Dank

  16. Spitze! Hat mir sehr weitergeholfen; hab es unter Linux installiert, wenn ich auch lange nach dem Pfad für die php.ini gesucht habe.

  17. 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 :-)

  18. 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.

  19. 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

  20. Vielen Dank. Hat geklappt.

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.

*