Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Smarty-3.1.16 demo

Sigi Saudi / 10 Antworten / Baumansicht Nickles

Hallo Gemeinde,

wie bekomme ich Smarty 3.1.16 zum Laufen? Ich habe die .zip Datei heruntergeladen und entzippt. dann habe ich alles auf mein Webhosting hochgeladen, aber wie adressiere ich nun in der Smarty/demo/index.php Datei die 'required' Datei 'Smarty.class.php'?

Ich habe schon versucht, den vollen Pfad 'http://www.myWeb.com/Smarty/libs/' einzugeben, vergeblich, die Demo startete nicht. Dann fand ich auf der Smarty Homepage den Hinweis wie folgt:

// path to Smarty windows style
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');

// include the smarty class, note 'S' is upper case
require_once(SMARTY_DIR . 'Smarty.class.php');

Das sieht danach aus, das die 'Smarty.class.php' auf der Festplatte C: eingerichtet werden sollte, was aber Bloedsinn ist, weil die Internetseiten, die Smarty dann anwenden, auf beliebigen Computern weltweit sein koennen und dann ist eine class Datei auf meinem Compjutyer sinnlos.

Wie muss ich also vorgehen, um zunaechst einmal die Smarty Demo zum Laufen zu bringen?

MfG aus dem 26 Grad warmen Maha Chana Chai in Thailand

Sigi Saudi

Gruesse aus Wang Nam Kiaw / Thailand
bei Antwort benachrichtigen
Borlander Sigi Saudi „Smarty-3.1.16 demo“
Optionen
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');

Den Pfad müsstest Du dann natürlich an Deiner Serverkonfiguration anpassen. Dazu müsstest Du vor allem erst mal ermitteln wo das Webroot-Verzeichnis im Dateisystem des Webservers liegt. Das ist je nach Hoster unterschiedlich.

Wenn Dein Wespace nun im Verzeichnus /kunde/sigisaudi/htdocs liegt, dann würde müsste dort entsprechend /kunde/sigisaudi/htdocs/Smarty/libs/ liegen.

GrußBorlander

bei Antwort benachrichtigen
Sigi Saudi Borlander „Den Pfad müsstest Du dann natürlich an Deiner ...“
Optionen

Hallo Borlander,

Wie bekomme ich die Adresse des Webroot Verzeichnis heraus? Wenn ich auf meine Internetseite will, muss ich 'http://www.moon-and-sun.com' eingeben. Dort, im htdocs-Verzeichnis, ist dann eine 'index.php' Datei, ueber die alles gestartet wird.

Das Smarty Verzeichnis liegt bei  'http://www.moon-and-sun.com/Smarty'. Das hatte ich aber schon in der 'require'-Anweisung ohne Erfolg angegeben.

Wenn das nicht das Webroot verzeichnis ist, muesste ich dann bei meinem Webhoster mal nachfragen, zu dem ich ein sehr gutes Verhaeltnis habe?

Meine domain ist jedenfalls 'www.moon-and-sun.com'.

MfG

Sigi Saudi

Gruesse aus Wang Nam Kiaw / Thailand
bei Antwort benachrichtigen
Borlander Sigi Saudi „Hallo Borlander, Wie bekomme ich die Adresse des Webroot ...“
Optionen
Das Smarty Verzeichnis liegt bei  'http://www.moon-and-sun.com/Smarty'

Der externe über HTTP zugängliche Pfad ist da vollkommen egal und würde auch nichts nützen, da Du über den Webserver extern nur noch die bereits interpretierten PHP-Scripte abrufen könntest.

Entweder fragst Du nach wo Deine Datene im Dateisystem des Webservers gespeichert werden, oder Du z.B. gibst Dir einfach mal den Inhalt der Variable __FILE__ aus um den Pfad zu ermitteln.

Gruß
Borlander

bei Antwort benachrichtigen
Sigi Saudi Borlander „Der externe über HTTP zugängliche Pfad ist da vollkommen ...“
Optionen

Hallo Borlander,

Vielen Dank fuer Deine prompten Antworten.

ich habe jetzt mal mit '$mypath = dirname(__FILE__);' den Pfad abgefragt aus dem Verzeichnis heraus, in dem die 'Smarty.class,php' auf dem Server liegt, Das 'echo' Ergebnis war:

/home/www/virtual/moon-and-sun.com/htdocs/Smarty/demo/smarty

also habe ich die 'include' Anweisung abgewandelt nach:

include_once(dirname(__FILE__) . '/smarty/Smarty.class.php');

weil die Demo Datei im Verzeichnis 'demo' liegt, und die 'class' Datei im folgenden Unterverzeichnis 'smarty', habe ich noch '/smarty' eingefuegt.

Das Ergebnis ist ein leeres Explorer Window im IE 09 und im Firefox 23.

Ich bekomme aber die Datei geladen, die die 'include' Anweisung enthaelt, denn ich habe als erste Anweisung in diese Datei ein 'echo "hello World";' eingebaut, der kommt. Das zweite echo nach der 'include' Anweisung kommt nicht mehr.

Wo mache ich einen Fehler?

MfG

Sigi Saudi

 

Gruesse aus Wang Nam Kiaw / Thailand
bei Antwort benachrichtigen
Borlander Sigi Saudi „Hallo Borlander, Vielen Dank fuer Deine prompten Antworten. ...“
Optionen

 

include_once(dirname(__FILE__) . '/smarty/Smarty.class.php'); weil die Demo Datei im Verzeichnis 'demo' liegt, und die 'class' Datei im folgenden Unterverzeichnis 'smarty', habe ich noch '/smarty' eingefuegt.

Da würde ich doch eher reltive Pfadangaben nutzen. Also einfach

include_once('smarty/Smarty.class.php');

Das Ergebnis ist ein leeres Explorer Window im IE 09 und im Firefox 23.

Was steht denn im Quelltext? Auch leer? Das scheint dann schon ein Smary-Problem zu sein. Sollte diese Demo denn überhaupt eine Ausgabe machen?

Gruß
Borlander

Das Ergebnis ist ein leeres Explorer Window im IE 09 und im Firefox 23.

bei Antwort benachrichtigen
Sigi Saudi Borlander „Da würde ich doch eher reltive Pfadangaben nutzen. Also ...“
Optionen

Hallo Borlander,

Gestern abend ging es bei uns auf Mitternacht zu (+6 Std Zeitverschiebung), deshalb antwortete ich nicht mehr.

Ich habe relative Pfadangaben schon vorher und jetzt noch mal probiert. Das gleiche Resultat, kein Ergebnis.

Das Demo Programm bestehr aus 2 Dateien:

index.php:

<?php
 include_once('functions.php');
 $cock = 'cock';
 $corn = 'corn';

 $tags = array
 (
  'cock' => $cock,
  'corn' => $corn
 );

 load_template ($tags, 'index.tpl');

?>

Und 'functions.php':

<?php

function load_template ( $tags, $template_page )
{

print_r($tags);
echo "<br />Hello World<br /><br />";
  
/*  require_once('/home/www/virtual/moon-and-sun.com/htdocs/Smarty/demo/smarty/Smarty.class.php'); */

//include_once(dirname(__FILE__) . '/smarty/Smarty.class.php');


        // path to Smarty windows style
        define('SMARTY_DIR', '/home/www/virtual/moon-and-sun.com/htdocs/Smarty/demo/smarty/');

        // include the smarty class, note 'S' is upper case  
        require_once(SMARTY_DIR . 'Smarty.class.php');
/*       require_once('/smarty/Smarty.class.php'); */


echo SMARTY_DIR;
echo "<br />Hello my World<br /><br />";

  $smarty = new Smarty();
 
  $smarty->caching = 0;
  $smarty->compile_check = true;
  $smarty->debugging = false;
  
  $smarty->template_dir = 'templates/';
  $smarty->compile_dir = 'templates_c/';
  $smarty->cache_dir = 'smarty_cache/';
  
  $smarty->clear_all_assign ();
  
  foreach ($tags as $assign => $value)
  {
   $smarty->assign($assign, $value);
  }
  
  $smarty->display($template_page);
 }


?>

Das Ergebnis muesste sein diie Ausgabe des templates mit dem Inhalt:

'cock eats corn'

aber es kommen nur meine Echos:

Array ( [cock] => cock [corn] => corn )
Hello World

/home/www/virtual/moon-and-sun.com/htdocs/Smarty/demo/smarty/
Hello my World

Die Datei 'functions.php' wird ordnungsgemaess included , weil der 'print_r' in dieser Datei das von 'index.php' generierte array ordnungsgemaess anzeigt.  Nur der folgende Ablauf fuehrt nicht zu dem erwarteten Ergebnis. Das template wird nicht angezeigt.

Ich habe 2 unterschiedliche Smarty Demoprogramme heruntergeladen mit jeweils einer eigenen 'Smarty.class.php' Datei. Beide Demos funktionieren nicht.

Gruss

Sigi Saudi

 

Gruesse aus Wang Nam Kiaw / Thailand
bei Antwort benachrichtigen
Borlander Sigi Saudi „Hallo Borlander, Gestern abend ging es bei uns auf ...“
Optionen
require_once('/smarty/Smarty.class.php');

Das wird so mit dem / am Anfang nicht funktionieren. Dadurch hättest Du nämlich eine absolute Pfadangabe auf einen Pfad smarty innerhalb des Root-Verzeichnis. Das gibt es bestimmt nicht.

Je nach eingestelltem Fehler-Level würdest Du da auch eine Meldung bekommen über das Fehlschlagen der Einbindung. Wahrscheinlich wäre es generell hilfreich die Anzeige von Fehlern zu aktivieren um das ganze zu testen…

Gruß
Borlander

bei Antwort benachrichtigen
Sigi Saudi Borlander „Das wird so mit dem / am Anfang nicht funktionieren. ...“
Optionen

Danke fuer Deine Antwort, Borlander.

Wie aktiviere ich die PHP Fehlermeldungen?

Ich habe nach dem tag <?php die Instruktion 'error_reporting(E_ALL | E_STRICT);' eingefuegt, aber es werden keine Errors angezeigt. 

Gruesse aus Wang Nam Kiaw / Thailand
bei Antwort benachrichtigen
Borlander Sigi Saudi „Danke fuer Deine Antwort, Borlander. Wie aktiviere ich die ...“
Optionen
'error_reporting(E_ALL | E_STRICT);' eingefuegt, aber es werden keine Errors angezeigt.

Spätestens bei einem require_once('diesedateigibtesgarantiertnicht'); sollte es knallen. Wobei ich mir nicht ganz sicher bin ob die Fehler bei Require nicht schon vor der Ausführung auftreten. Dann wäre es egal was Du als Error-Reporting-Level einstellst. Probiere es also alternativ mal mit include_once, oder teste das ganze doch einfach erst mal auf einer lokalen Installation…

bei Antwort benachrichtigen
Sigi Saudi Borlander „Spätestens bei einem require_once ...“
Optionen

Das Ergebnis mit include ist das selbe wi mit require und auch hier keine Fehlermeldungen.

Ich habe jetzt die include Sequenz geaendert in:

// path to Smarty windows style
define('SMARTY_DIR', '/home/www/virtual/moon-and-sun.com/htdocs/Smarty/libs/');

// include the smarty class, note 'S' is upper case
include_once(SMARTY_DIR . 'Smarty.class.php');

Das echo SMARTY_DIR; ergibt:

/home/www/virtual/moon-and-sun.com/htdocs/Smarty/libs/

Von moon-and sun.com ab entspicht der Pfad der Lage der Smarty,class,php Datei auf dem Host. Die Angaben davor kann ich nicht beurteilen.

Den selben Pfad become ich auch mit der magic constant __FILE__.

Gruss

Sigi Saudi

Gruesse aus Wang Nam Kiaw / Thailand
bei Antwort benachrichtigen