[Smarty] Installatie Smarty werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
Hallo,

Op een linux webserver heb ik in de map httpdocs staan:
- map Smarty met de bestanden uit de map lib van de originele installatiemap van smarty
- de mappen templates, templates_c, cache en configs
- index.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$path = '/var/www/vhosts/domein/httpdocs/';
// put full path to Smarty.class.php
require($path.'Smarty/Smarty.class.php');
$smarty = new Smarty();

$smarty->template_dir = $path.'templates';
$smarty->compile_dir = $path.'templates_c';
$smarty->cache_dir = $path.'cache';
$smarty->config_dir = $path.'configs';

$smarty->assign(array('name' => 'Voorbeeldnaam'));

$smarty->fetch('pagina.tpl');
?>


In de map templates staat pagina.tpl:
code:
1
2
3
4
5
<html>
<body>
Hello, {$name}!
</body>
</html>


De rechten van elk bestand staan zoals beschreven in http://www.smarty.net/quick_start.php
Als ik nu naar de site ga (index.php) komt er een lege pagina in plaats van "Hello, Voorbeeldnaam!".

Heeft iemand een idee hoe dat komt?

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Doet fetch niet alleen de html ophalen? Het is lang geleden dat ik met smarty heb gemerkt, maar volgens print display het resultaat direct naar de browser. Fetch geeft volgens mij het resultaat terug aan een variabele.

Heb even de smarty documentati erbij gepakt (had je ook zelf even kunnen doen!):
http://www.smarty.net/manual/en/api.fetch.php
http://www.smarty.net/manual/en/api.display.php

Misschien de volgende iets beter lezen?

[ Voor 33% gewijzigd door Niemand_Anders op 08-04-2010 12:09 . Reden: Toevoeging url's documentatie ]

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 23:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

^ Inderdaad. Wat jij wil is $smarty->display('pagina.tpl');

[edit]
@Niemand_Anders: stiekem editten :P

Wat ook had gewerkt was: echo $smarty->fetch('pagina.tpl');
Zo, heb ik toch nog iets toegevoegd :>

[ Voor 58% gewijzigd door RobIII op 08-04-2010 12:11 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
Die oplossingen werken helaas niet. echo $smarty->fetch('pagina.tpl'); geprobeerd en $smarty->display('pagina.tpl');

Ook dan wordt een lege pagina weergegeven.

Acties:
  • 0 Henk 'm!

  • pderaaij
  • Registratie: Oktober 2005
  • Laatst online: 13-01 20:01
Staat je error_reporting aan? Lijkt er op dat er iets anders mis gaat.

http://php.net/error_reporting

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 23:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Anoniem: 354249 schreef op donderdag 08 april 2010 @ 12:23:
Ook dan wordt een lege pagina weergegeven.
Wat is een lege pagina? Bedoel je ook als je de bron bekijkt? En wat doet een:
PHP:
1
phpinfo();
bijvoorbeeld?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • dik_voormekaar
  • Registratie: April 2003
  • Laatst online: 17:38
staat je template (pagina.tpl) wel in de template folder?

Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
phpinfo() geeft aan dat er version 5.1.6 gebruikt wordt.
Als ik rechtermuisknop op de pagina doe en dan paginabron open is dat helemaal leeg. Firebug geeft:
code:
1
2
3
4
<html>
 <head></head>
 <body></body>
</html>

[ Voor 2% gewijzigd door Anoniem: 354249 op 08-04-2010 13:00 . Reden: [/code] vergeten ]


Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
error_reporting(E_ALL); geeft niets terug

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Had je de debugging console van smarty al gebruikt?

MIsschien kun je ook eens een dump_var($smarty) proberen? Misschien zie je ineens een path of zo verkeerd staan in de configuratie..

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Kaasplank
  • Registratie: Februari 2001
  • Niet online
PHP:
1
$smarty->assign(array('name' => 'Voorbeeldnaam'));


:

PHP:
1
2
3
$smarty = new Smarty();
$smarty->assign('name', 'Voorbeeldnaam');
$smarty->display('pagina.tpl');


geloof dat je een array niet zo moet assignen

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:57

Creepy

Tactical Espionage Splatterer

Kaasplank: anders check je de volgende keer even de docs voordat je wat post ;)

http://www.smarty.net/manual/en/api.assign.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// passing name/value pairs
$smarty->assign('Name', 'Fred');
$smarty->assign('Address', $address);

// passing an associative array
$smarty->assign(array('city' => 'Lincoln', 'state' => 'Nebraska'));

// passing an array
$myArray = array('no' => 10, 'label' => 'Peanuts');
$smarty->assign('foo',$myArray);

// passing a row from a database (eg adodb)
$sql = 'select id, name, email from contacts where contact ='.$id;
$smarty->assign('contact', $db->getRow($sql));
?>

Dus op die manier zaken doorgeven kan wel. Dit is het probleem dan ook niet.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
dump_var($smarty) in de code gezet, voor de display, maar dat geeft geen output
$debugging = true; onder new smarty; gezet en {debug} in de tpl file, maar ook dan geen output.

Lijkt alsof $smarty = new smarty; helemaal niet werkt, maar er staat wel een map Smarty in httpdocs met daarin de files uit lib. Verder heb ik print_r($_SERVER['DOCUMENT_ROOT']); in $path gezet.

Gek probleem

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 11-04 07:15
print_r = normaal bedoelt voor arrays en niet voor strings zoals DOCUMENT_ROOT e.d. En voor zover ik weet moet je bij assign altijd een naam opgeven en dan de waarde (zoals array of string).

Test anders een dit voorbeeldje:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$path = '/var/www/vhosts/domein/httpdocs/';
require_once($path.'Smarty/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = $path.'templates';
$smarty->compile_dir = $path.'templates_c';
$smarty->cache_dir = $path.'cache';
$smarty->config_dir = $path.'configs';

$smarty->assign('name', 'Voorbeeldnaam');

$smarty->display('pagina.tpl');


pagina.tpl:
HTML:
1
2
3
4
5
<html>
<body>
Hello, {$name}!
</body>
</html>


En om het even zeker te weten kijk of de volgende directory's bestaan:
/var/www/vhosts/domein/httpdocs/templates/
/var/www/vhosts/domein/httpdocs/templates_c/ (chmod 0777)
/var/www/vhosts/domein/httpdocs/cache/
/var/www/vhosts/domein/httpdocs/configs/

Verder lijkt mij dit een kwestie van debuggen en natuurlijk error_reporting eerst even op E_ALL te zetten, zo krijg je in ieder geval een error te zien indien er een fout optreedt.

Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Anoniem: 354249 schreef op donderdag 08 april 2010 @ 14:07:
dump_var($smarty) in de code gezet, voor de display, maar dat geeft geen output
Ik denk niet dat je error_reporting(E_ALL); bovenaan je code hebt gezet, want dan had je een error gekregen op dump_var (dat is namelijk een functie die niet bestaat).

Probeer eens var_dump($smarty);

Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
Tharulerz schreef op donderdag 08 april 2010 @ 15:11:
[...]


Ik denk niet dat je error_reporting(E_ALL); bovenaan je code hebt gezet, want dan had je een error gekregen op dump_var (dat is namelijk een functie die niet bestaat).

Probeer eens var_dump($smarty);
Dat had ik inderdaad niet tegelijk getest. var_dump($smarty); geeft het object(Smarty) maar ik zie daar weinig verhelderende dingen in staan. De assign is in ieder geval gelukt: " ["name"]=> string(13) "Voorbeeldnaam"

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Lees Tips bij debuggen eens door, want dit soort problemen waar je geen output ( lijkt ) te krijgen moet je gewoon door wat debuggen kunnen oplossen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 11-04 07:15
Zoals Woy ook al zegt dit is gewoon een debug probleem, chmod voor de zekerheid ook je templates naar 755 even om te testen.. Probeer zelf ook eens wat te bedenken door Google te gebruiken, aangezien mijn magische bol niets zegt over wat het probleem precies kan zijn zonder een goede output.

Gelieve het dus uitgebreid te zeggen en niet van : 'de pagina blijft blanco' en ook waarom jij denkt dat die blanco blijft. We weten 1 ding in ieder geval al zeker, PHP (of Smarty) doet het niet om je te pesten. :)

Acties:
  • 0 Henk 'm!

  • Blue Eyed Devil
  • Registratie: Juli 2009
  • Laatst online: 24-04 12:32
Hmm,

Nadat je smarty aanroept, plaats daar achter eens:
PHP:
1
$tpl->debugging = true;


Dit zou het debug-scherm van smarty zelf moeten oproepen.

En in plaats van
PHP:
1
$path = '/var/www/vhosts/domein/httpdocs/';


Probeer dit eens:
PHP:
1
2
3
4
5
6
7
8
9
10
$path = $_SERVER['DOCUMENT_ROOT'];

//
//en je dir-declaraties zouden dan dit moeten zijn:
//

$smarty->template_dir = $path.'/templates';
$smarty->compile_dir = $path.'/templates_c';
$smarty->cache_dir = $path.'/cache';
$smarty->config_dir = $path.'/configs';

[ Voor 3% gewijzigd door Blue Eyed Devil op 08-04-2010 17:46 ]


Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
Hij doet het, templates_c op chmod 777 gezet ipv 775 (wat in de http://www.smarty.net/quick_start.php staat) en dat werkt dus.

Vraag ik me nog wel af waarom met chmod 777 wel en niet met 775 terwijl de quick start van smarty dat zelf aangeeft...

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 11-04 07:15
Chmod 775 = groepen en eigenaar mag schrijven
Chmod 777 = iedereen mag schrijven zoals ik je al eerder zei.

Zoals ik ook zei, dit was gewoon een debug fout.

Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
Ja, dat klopt, het is alleen wel verwarrend als de documentatie(via google, zoals je ook zei) zegt dat het op chmod 775 moet staan.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 11-04 07:15
Dat klopt maar dan moet je wel alle stappen volgen, ze gaan daarvan uit dat de webserver draait onder de gebruiker nobody met de groep nobody, dan willen ze ook dat dat de eigenaar van die directory is dan zou 775 inderdaad aan de order zijn.

Maar omdat jouw httpd-daemon onder een andere gebruiker draait is het niet mogelijk om er in te schrijven. Daarom zie je ook de chown nobody:nobody staan.

Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
Manuel schreef op vrijdag 09 april 2010 @ 09:23:
Dat klopt maar dan moet je wel alle stappen volgen, ze gaan daarvan uit dat de webserver draait onder de gebruiker nobody met de groep nobody, dan willen ze ook dat dat de eigenaar van die directory is dan zou 775 inderdaad aan de order zijn.

Maar omdat jouw httpd-daemon onder een andere gebruiker draait is het niet mogelijk om er in te schrijven. Daarom zie je ook de chown nobody:nobody staan.
Oke, dat is duidelijk, bedankt voor de uitleg!

Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 08-04 04:38
Even beetje offtopic, maar weet je zeker dat je smarty wilt gebruiken? want mijn ervaring is dat dit vaak een mooie entry voor hackers is...

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
stef-o schreef op vrijdag 09 april 2010 @ 10:32:
Even beetje offtopic, maar weet je zeker dat je smarty wilt gebruiken? want mijn ervaring is dat dit vaak een mooie entry voor hackers is...
Als je dit soort uitspraken doet, is het ook wel netjes als je daar iets van een onderbouwing bij doet. Ik heb geen ervaring met Smarty, maar ik zou er minstens wat over gehoord hebben als Smarty de deur wagenwijd open zou zetten voor hackers.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 30-04 10:01
stef-o schreef op vrijdag 09 april 2010 @ 10:32:
Even beetje offtopic, maar weet je zeker dat je smarty wilt gebruiken? want mijn ervaring is dat dit vaak een mooie entry voor hackers is...
Smarty is GEEN entry voor hackers. Laat dat even duidelijk zijn vooral. Ik gebruik het voor al mijn projecten, kan eigenlijk niet meer zonder :) Ge-wel-dige tool. Net zo hard ontkracht, ook zonder argumenten te geven.

Iig @ TS:

Smarty wil de geparste bestanden in een mappie neerzetten, staan de rechten daarop goed? M.a.w. mag Smarty wel wat schrijven?

En wat bevat je .tpl-bestand? Als die leeg is zie je natuurlijk nog niks he :)

[ Voor 23% gewijzigd door _eXistenZ_ op 09-04-2010 10:43 ]

There is no replacement for displacement!


Acties:
  • 0 Henk 'm!

Anoniem: 354249

Topicstarter
Werkt die eindelijk ;)

Ik wil een duidelijke scheiding tussen PHP en HTML en heb een beetje ervaring met het gebruik van Smarty (toen was die al geinstalleerd). Volgens mij is het ook zo dat de communicatie tussen PHP en HTML makkelijker wordt.
Zijn er goede alternatieven?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
_eXistenZ_ schreef op vrijdag 09 april 2010 @ 10:42:
[...]
Smarty is GEEN entry voor hackers. Laat dat even duidelijk zijn vooral.
Ik kan het me ook niet voorstellen, daarom vraag ik ook een onderbouwing. Het kan natuurlijk best zijn dat er bepaalde manier van werken met Smarty zijn die security risico's met zich meebrengen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 11-04 07:15
Anoniem: 354249 schreef op vrijdag 09 april 2010 @ 10:49:
Werkt die eindelijk ;)

Ik wil een duidelijke scheiding tussen PHP en HTML en heb een beetje ervaring met het gebruik van Smarty (toen was die al geinstalleerd). Volgens mij is het ook zo dat de communicatie tussen PHP en HTML makkelijker wordt.
Zijn er goede alternatieven?
Zie voor redenen om het niet te gebruiken:
http://www.nosmarty.net/

Acties:
  • 0 Henk 'm!

  • Ram0n
  • Registratie: Maart 2002
  • Laatst online: 20-04 16:44

Ram0n

Bierbrouwende nerd

stef-o schreef op vrijdag 09 april 2010 @ 10:32:
Even beetje offtopic, maar weet je zeker dat je smarty wilt gebruiken? want mijn ervaring is dat dit vaak een mooie entry voor hackers is...
Wat een onzin... Ik zou nu inderdaad héél graag wat voorbeelden zien. Want ook die site die hierboven genoemd werd geeft die niet.

Eigenaar/brouwer Milky Road Brewery

Pagina: 1