Smarty. Läuft lokal, aber nicht im web

mille

Erfahrenes Mitglied
Hallo!


Ich habe gerade eine Seite fertig gestellt und sie bis eben auch immer auf meinem Lokalen Host platziert. Da läuft auch alles Prima.

Nun hab ich alles auf meinen Webserver geladen und beim Aufruf der index.php bleibt alles weiss. Es passiert nichts.
Obwohl alle Pfadangaben korrekt sind, Smarty korrekt inkludiert und instanziiert wird (var_dump() hats bestätigt).
Auch ein direktes inkludieren eines Templates in den PHP Code (zu Testzwecken) klappt. Der Zugriff ist also möglich.
Die Schreibrechte für templates, templates_c, cache und config sind auf 777 gesetzt (setze ich dann wieda runter).

Dennoch bleibt alles weiss.

Kurze Beschreibung des Verzeichnisstruktur.

html-Document-root ist der Ordner "html".
Dieser beinhaltet das Verzeichnis "smarty" und das Verzeichnis "domainname".
Genauso verhält es sich mit dem Localhost!!

die index.php (aus Verzeichnis "domainname") inkludiert aus dem "html" ordner das smarty skript und setzt die absoluten Pfade, wie sie mir durch $_SERVER['DOCUMENT_ROOT'] geliefert wurden (sprich: "/var/bla/bla/user/html/smarty")


Kennt ihr das Problem und wisst ihr Abhilfe? ich weiss absolut keinen Rat mehr.
Alle Pfadangaben sind mehrfach vergeblich geprüft :(


//edit:
lokalhost: Windows
webserver: linux (zumindestens suggeriert dass das Document root) ;)
 
Zuletzt bearbeitet:
Ich brauch unbedingt hilfe.
relativ schnell - daher pushe ich das thema ausnahmsweise noch einmal nach oben!!

Wenn wieder kein Rat folgt muss ich wohl verzweifeln :(


Lieben Gruß
 
Extra wegen dir schnell registriert :)

$_SERVER['DOCUMENT_ROOT']
Da musst du den Host + Pfad angeben und nicht den absoluten Pfad (reine Vermutung). Wenn das nicht funktioniert meld dich nochmal.
 
Na ich hab ja $_SERVER['DOCUMENT_ROOT'] verwendet und gesehen das es sich um "/var/www/user/html/smarty" handelt

Die PHP dateien liegen unter "/var/www/user/html/domainname.de"


Was du mit host meinst, weiss ich jetzt nicht genau, allerdings brauch ich den doch nich angeben, schließlich weiss doh das Skript was mit den Ordnern gemeint ist
 
Hallo!

DOCUMENT_ROOT gibt das Rootverzeichnis vom Webserver aus und nicht das Verzeichnis vom User.
Dem Pfad nach bist Du warscheinlich nur ein User von vielen auf dem Server, warscheinlich hast Du sogar ein Virtual Host.
Ich vermute dass "/var/www/user/html/domainname.de" dein öffentliches Startverzeichnis ist, demnach müsste dieses auch das DOCUMENT_ROOT sein.
Oder kannst Du auch dateien aufrufen die in "/var/www/user/html" liegen?

Erstelle mal eine PHP Datei mit folgendem Inhalt, lege diese in "/var/www/user/html/domainname.de" ab und rufe sie über den Browser auf:
PHP:
<?php
echo $_SERVER['DOCUMENT_ROOT']."<br>";
echo $_SERVER['SCRIPT_FILENAME']."<br>";
echo dirname(__FILE__)."<br>";
?>
und poste mal das Ergebnis.

Gruss Dr Dau
 
Hier ersteinmal die Ausgabe:

Code:
/var/www/s11u39/html/domainname.de
/var/www/s11u39/html/domainname.de/TEST.php
/var/www/s11u39/html/domainname.de

Nun habe ich vorübergehend die Smarty engine in
/var/www/s11u39/html/domainname.de/smarty
postiert. Aber dann muss ich das für jede Domain tun und das ist ja nun nicht der Sinn der Modularisierung von code.
Ich würde aber dennoch smarty "globaler" positionieren das auch andere Domains die im HTML verzeichnis liegen die smartyengine nutzen können!

Okay, mein Teil ist ja "erfüllt" die Pfade stehen oben :)

MFG und Danke soweit schon mal
 
Und das Ergebnis sagt ganz klar dass nicht "/var/www/s11u39/html/smarty" dein DOCUMENT_ROOT ist, sondern "/var/www/s11u39/html/domainname.de".
Ich kenne Smarty zwar nicht, aber demnach kannst Du von auusen auch nicht auf "/var/www/s11u39/html/smarty" zugreifen, dass müsste der Server erledigen..... evtl. könnte es ja klappen wenn Du in domainname.de eine PHP Datei legst die das Smarty Verzeichnis einbindet.
In dem Fall würde ich es nicht mit DOCUMENT_ROOT versuchen, sondern mit dirname(__FILE__), dieses gibt dem Pfad zu dem Verzeichnis an wo die Datei drin liegt.... unabhängig vom DOCUMENT_ROOT.
 
na das einbinden ja

wenn ich in /html/ eine test.php lege, die inkludiere und ausgebe dann das.
Wenn ich smarty inkludiere, instanziiere und mit var_dump() "ausgebe" sehe ich auch, das korrekt instanziiert wurde.

Aber vielleicht liegts an etwaigen ausgaben, das templates ausserhalb des roots nicht !?
 
Also an den Verzeichnisrechten liegts nicht.
ABER:
Wenn ich bei Smarty foglendes eingebe: $smarty->display("nichtvorhanden.php"); wird dennoch kein smartyfehler ausgegeben - genauso wenig, wie etwas angezeigt wird :(.

Aber mit dieser info ist das vielleicht genauer beschrieben.
 
Wie gesagt, ich kenne Smarty nicht.
Hmm, ich denke dass es zwar möglich währe zumindest ein Teil von Smarty in ein nicht öffentliches Verzeichnis auszulagern, dann müsstest Du Smarty aber demendsprechend umschreiben.
Von daher würde ich sagen, es ist einfacher Smarty in jedes domainname.de Verzeichnis separat abzulegen.
 
Zurück