[Smarty] Wat een problemen..

Pagina: 1
Acties:

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Omdat mijn huidige template-parser zo traag is, wil ik al tijden smarty gaan gebruiken. Echter telkens als ik het probeer, gaat er vanalles mis, en kap ik er maar weer mee. Dus nu eens een GOEIE poging dacht ik :)

De problemen die ik tegenkom.. Ow ja, ik heb standaard instellingen genomen enzo.. ./htdocs/smarty bestaat (waar alle volgens de manual benodigde bestanden inzitten) en ./htdocs/html (waar de PHP-bestanden terecht gaan komen).. Het voorbeeldscript dat erbij zit en de template

Fatal error: Failed opening required 'SMARTY_DIRSmarty.class.php' (include_path='.:/usr/share/php') in ./htdocs/html/index.php on line 9
Deze is redelijk logisch.. Include path staat niet goed.. inf_get (include_path) leverde niet de goeie resultaten op. Dus (volgens de handleiding) definiëren:
define ("SMARTY_DIR", "./htdocs/smarty/");
require (SMARTY_DIR . "Smarty.class.php");
Maar.. Kan iemand misschien iets uitleggen over die include_path? Da's globaal voor ALLE PHP-scripts toch normaliter? Maar als je smarty dan in die "normale" standaard dir installeert, en veel verschillende gebruikers maken gebruik van die smarty-lib.. Gaat smarty dan de gecompilede PHP's wel goed uitpoepen in de GOEIE dir (en niet in de gezamelijke dir van álle files)?

Warning: Smarty error: problem writing 'templates_cDIRECTORY_SEPARATOR641DIRECTORY_SEPARATOR641021831DIRECTORY_SEPARATOR0.php.' in /htdocs/smarty/Smarty.class.php on line 546
DEZE vind ik dus wazig.. Over DIRECTORY_SEPERATOR is bijna niets te vinden, behalve op php.net, maar daar werd ik niet veel wijzer uit. Kan iemand hier iets meer en iets duidelijkers overzeggen?
Mijn tijdelijke oplossing
define ("DIRECTORY_SEPARATOR", "/");

Als 3e en laatste wazige iets (wat ik nu nog wazig vind in ieder geval): Hij wil in /htdocs/html/ een directory templates_c maken, terwijl ik die al gemaakt had in /htdocs/smarty/ ! Moet je dan ook nog opgeven waar de compiled scripts in moeten komen te staan ofzo? Hmm.. misschien vind ik dat nu spontaan :P $compile_dir :) Scrap the last one scotty :9

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven

'SMARTY_DIRSmarty.class.php'

SMARTY_DIR is een constante met daarin de directory waar smarty staat. Deze moet je natuurlijk wel aangeven in het configuratiebestand van Smarty...

het gaat om goed lezen, zoals bij de meeste problemen ;)

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Ik weet niet of het direct je probleem oplost, maar het maakt het werken met Smarty een stukje makkelijker.

Ik gebruik een eigen subclass welke de Smarty class extends. In deze subclass kan ik alle paden goedzetten.

vb:
PHP:
1
<?class NEW_Smarty extends Smarty {  function NEW_Smarty() {    //--- setting dirs..    $this->template_dir = SMARTY_DIR."../templates";    $this->compile_dir = SMARTY_DIR."../templates_c";    $this->plugins_dir = "smarty_plugins";    //--- call constructor of Smarty class    Smarty::Smarty();  }}?>

Succes!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Da's wel handig inderdaad, die funtie... Ga ik denk ik wel gebruiken inderdaad :)

Over die SMARTY_DIR constante.. Da's inderdaad logische koek, daar kwam ik ook wel uit. Maar het gaat me met name om die include_path.. Als dat "standaard" is voor iedereen, zoals bijvoorbeeld /usr/shares/php/ ofzo, dan wil smarty (mits de gebruiker het anders instelt dmv $compile_dir) in de smartydir (dus /usr/shares/php/smarty/templates_c) alles gaan compilen toch? Van alle gebruikers die gebruik maken van het smarty script?

Waar het mij éigenlijk om gaat, is die wazige constante DIRECTORY_SEPERATOR. Het spreekt voor zich, op windows machines is dat een "\", op linux machines een "/". Maar moet de gebruiker dat instellen? Of is het een variabele die alleen Smarty gebruikt?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
woei :)
Meer mensen met Smarty problemen :)
Weet iemand een site met een goede manual?
Want ik heb namelijk het probleem dat ik geen schrijfrechten heb. Ik wil dus niet cachen en compilen enzo.

Maar ik kan het echt niet vinden :'(

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Had ik ook, problemen met schrijfrechten.. Maar die heb ik opgelost :)

Als de dir templates_c niet bestaat in je smarty-dir, dan probeert ie die aan te maken. Als dat mág is er niets aan de hand, alles gaat goed. Als dat niet mag, moet je hem even zelf aanmaken, en dan zijn er 2 opties.

chown nobody:nobody templates_c/
(aannemend dat je apache op linux draait en als nobody)
of
chmod 777 templates_c/

Dan zou het moeten mogen :) Post anders ff de error, die zeggen mij op het moment meer dan smarty zelf :P

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
nee, dat werkt dus niet :)
Want dan kan ik (de smartyengine) nog steeds geen subdirs aanmaken.

Ik zoek echt een manier om niet te cachen en compilen.

edit:
http://nielsz.servicez.org
en als ik die directory aanmaak, kan ik jep gaan mailen of hij ajb de directory wil verwijderen :+

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Op vrijdag 14 juni 2002 09:55 schreef Nielsz het volgende:
woei :)
Meer mensen met Smarty problemen :)
Weet iemand een site met een goede manual?
Want ik heb namelijk het probleem dat ik geen schrijfrechten heb. Ik wil dus niet cachen en compilen enzo.

Maar ik kan het echt niet vinden :'(
Welke versie smarty en php gebruik je? er waren namelijk wat problemen met de mkdir functie van php

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Warning: SAFE MODE Restriction in effect. The script whose uid is 1060 is not allowed to access ./templates_c/117 owned by uid 33 in /home/nielsz/html/includes/Smarty.class.php on line 1326

Savemode on :) Ga goed na welke user apache draait, en van wie (welke user) Smarty.class.php is en van wie de dir templates_c is, en wat voor schrijfrechten daarop staan

edit:
Smarty.class.php is van 1060 (of wordt gedraait als uid 1060:?), en probeert in ./templates_c/117/ een dir te maken, maar ./templates_c/117 is niet van 1060, maar van 33. Dat wil niet zeggen dat ./templates_c/ van 33 is, misschien is die wel van 1060, maar ./templates_c/117/ iig niet

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 14 juni 2002 10:11 schreef elviver het volgende:
Warning: SAFE MODE Restriction in effect. The script whose uid is 1060 is not allowed to access ./templates_c/117 owned by uid 33 in /home/nielsz/html/includes/Smarty.class.php on line 1326

Savemode on :) Ga goed na welke user apache draait, en van wie (welke user) Smarty.class.php is en van wie de dir templates_c is, en wat voor schrijfrechten daarop staan
really? :P
Het probleem is ik gewoon host bij servicez.org, en ik daar dus absoluut geen invloed op kan uitoefenen..

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Je kunt ook niet een dir maken die van dezelfde user is als de apache deamon?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 14 juni 2002 10:14 schreef elviver het volgende:
Je kunt ook niet een dir maken die van dezelfde user is als de apache deamon?
nee.

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Php.net heeft te melden:
However, there may be environments where a strict UID check is not appropriate and a relaxed GID check is sufficient. This is supported by means of the safe_mode_gid switch. Setting it to On performs the relaxed GID checking, setting it to Off (the default) performs UID checking.
Kun je daar mee aanklooien? Ik weet niet hoe dat allemaal werkt met safe_mode en ini_set enzo, maar misschien is het wat?

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Smarty heerst :Y)

Alleen let wel dat Smarty met name goed is vanwege de compile functie. Om templates te compileren heb je schrijfrechten en een compiled-templates-directory nodig, het is niet anders.

Wat kan helpen is de laatste CVS versie van Smarty downloaden. Die maakt geen subdirectories aan in de compile-directory.

Over de topic-starter: Het lijkt wel alsof jouw Smarty de constanten negeert. Normaliter zet Smarty de SMART_DIR en DIRECTORY_SEPERATOR constanten allemaal zelf.

|_____vakje______|


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Op vrijdag 14 juni 2002 11:05 schreef CyberSnooP het volgende:
Over de topic-starter: Het lijkt wel alsof jouw Smarty de constanten negeert. Normaliter zet Smarty de SMARTY_DIR en DIRECTORY_SEPERATOR constanten allemaal zelf.
SMARTY_DIR (met een Y erbij :P) zet ie ook wel zelf als ik de include_path verander (met ini_set()).. Maar dan krijg ik inderdaad een vreemde error met DIRECTORY_SEPERATOR erin. Die set ie dan niet. Beweer jij dat Smarty.class.php die automatisch set? Ik ga zo even de source van Smarty doorspitten, op zoek ernaar..

CVS-dingen.. Dat is toch de smarty die in ontwikkeling is? Ik heb van CVS gehoord, maar snap niet precies wat dat inhoudt.

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Op vrijdag 14 juni 2002 11:32 schreef elviver het volgende:
CVS-dingen.. Dat is toch de smarty die in ontwikkeling is? Ik heb van CVS gehoord, maar snap niet precies wat dat inhoudt.
Effe zorgen dat je cvs.exe hebt, bijv vanaf hier

Vervolgens in de dir gaan staan waar je smarty wil. Dan het volgende intypen:
code:
1
cvs -d :pserver:cvsread@cvs.php.net:/repository login

Het wachtwoord is phpfi. Nu ben je ingelogged op de cvs server. Om nu smarty eraf te halen doe je:
code:
1
cvs -d :pserver:cvsread@cvs.php.net:/repository co smarty

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 14 juni 2002 13:24 schreef GraasGast het volgende:
manual?

http://smarty.php.net/manual/en/
ja dat weet ik ;)
Maar de juiste optie kan ik niet vinden.

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Op vrijdag 14 juni 2002 11:58 schreef freak007 een stuk handige uitleg
Dank je.. Ik geloof dat dat wel gaat lukken als ik weer thuis ben. Maar CVS zelf. Dat is toch een soort Visual Sourcesafe ofzo? Ik bedoel: een plek waar source opgeslagen wordt zodat verschillende ontwikkelaars erbij kunnen om die te lezen, en sommigen om uit te checken, te bewerken en een nieuwe versie in te checken?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 14 juni 2002 13:56 schreef elviver het volgende:

[..]

Dank je.. Ik geloof dat dat wel gaat lukken als ik weer thuis ben. Maar CVS zelf. Dat is toch een soort Visual Sourcesafe ofzo? Ik bedoel: een plek waar source opgeslagen wordt zodat verschillende ontwikkelaars erbij kunnen om die te lezen, en sommigen om uit te checken, te bewerken en een nieuwe versie in te checken?
ja, maar dan goed ;)

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Maar dat is het idee er wel achter.. Kee dan :)
Eventjes twee links: link en link. Daar staat echt een héle hoop :)
Maar die hadden we zelf natuurlijk ook allemaal al gevonden :P
Pagina: 1