Toon posts:

[Smarty] geeft niks weer

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een website met Smarty gemaakt. Deze draait lokaal met WAMP zonder problemen. Ook op een shared webserver met PHP 5.1 draait deze zonder problemen.
Als ik de website echter op een andere shared webserver met PHP 5.2 draai krijg ik echter geen output.

Ik heb templates_c voldoende schrijfrechten meegegeven. Als ik een pagina open wordt de template ook netjes naar de templates_c map geschreven, dus de paden kloppen. Ik krijg alleen een wit scherm te zien zonder foutmeldingen.

Een verschil tussen beide webservers is dat ik een kleine aanpassing gemaakt moest maken om een fout te omzeilen.

webserver 1:
PHP:
1
2
3
4
5
6
7
8
9
10
11
// index.php
require_once 'include/classes/class1.php';
$class = new class1();

// class1.php
class class1 {
...
require_once 'include/classes/class2.php';
$class2 = new class2();
...
}


webserver 2:
PHP:
1
2
3
4
5
6
7
8
9
10
11
// index.php
require_once 'include/classes/class1.php';
$class = new class1();

// class1.php
class class1 {
...
require_once 'class2.php'; // hier zit het verschil in path
$class2 = new class2();
...
}


Waarschijnlijk zal er een instelling op de server aan- of uitgezet zijn waardoor dit verschil optreed. Mogelijk dat dit ook de oorzaak is van de Smarty probleem.

Iemand die mij op de goede weg kan helpen?

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Wat heb je al aan debugging gedaan? Een wit scherm zegt niet zo veel, probeer op zn minst een foutmelding te krijgen (error level even op all zetten) of met wat echo's de plek van de fout te vinden.

TabCinema : NiftySplit


Verwijderd

Topicstarter
Bozozo schreef op maandag 16 juni 2008 @ 22:36:
Wat heb je al aan debugging gedaan? Een wit scherm zegt niet zo veel, probeer op zn minst een foutmelding te krijgen (error level even op all zetten) of met wat echo's de plek van de fout te vinden.
Je hebt gelijk, ben ik vergeten te vermelden.

PHP:
1
2
3
error_reporting(E_ALL);

$smarty->error_reporting = E_ALL;

geeft geen foutmeldingen, lijkt me dat hier al iets misgaat

en ik heb overal in de php bestand echo's geplaatst, en deze worden allemaal weergegeven. Ook een echo voor en na $smarty->display(); worden beide weergegeven.

  • Xcalibur
  • Registratie: Augustus 2002
  • Laatst online: 21:51
klinkt als een PHP foutmelding, met error_reporting uit krijg je dan inderdaad een blanco scherm, omdat je nog voor de eerste output zit :)

Edit: tegelijktijd gepost ;)
Staat ook display_errors aan?

[ Voor 18% gewijzigd door Xcalibur op 16-06-2008 22:59 ]

Designer | Developer | Director | Photographer | LARPer | Geek | Male | 39


Verwijderd

Topicstarter
Xcalibur schreef op maandag 16 juni 2008 @ 22:59:
klinkt als een PHP foutmelding, met error_reporting uit krijg je dan inderdaad een blanco scherm, omdat je nog voor de eerste output zit :)

Edit: tegelijktijd gepost ;)
Staat ook display_errors aan?
display_errors stond idd uit, nadat ik deze aangezet heb kreeg ik wel een foutmelding

code:
1
Warning: Smarty::include(include/smarty/templates_c/%%82^823^823B39A1%%layout.tpl.php) [smarty.include]: failed to open stream: No such file or directory in /usr/local/www/vhosts/CONNECTINGPEOPLE2000.NL/httpdocs/admin/include/smarty/Smarty.class.php on line 1265


Aan de hand hiervan en de eerder gevonden verschil (zie startpost) is mij duidelijk geworden dat de path anders gevolgd wordt. Bovenstaande path klopt wel, maar aangezien de Smarty class ook in de folder 'include/smarty' moet de path 'templates_c/bestandsnaam' zijn op deze webserver.

Is er een ini setting (voor de webserver) die ervoor zorgt dat de path relatief is aan de script (index.php) die het aanroept en niet aan de class waarin het aangeroepen wordt (Smarty.class.php)? Zodat de path in de foutmelding wel werkt.

[ Voor 11% gewijzigd door Verwijderd op 16-06-2008 23:45 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Klik?

Samen met $_SERVER['DOCUMENT_ROOT'] is dit niet zo'n kunst.

Professionele website nodig?


Verwijderd

Topicstarter
curry684 schreef op dinsdag 17 juni 2008 @ 00:00:
Klik?

Samen met $_SERVER['DOCUMENT_ROOT'] is dit niet zo'n kunst.
Dus altijd alles Absolute maken i.p.v. Relative?
Ik hoopte dat er een instelling op de webserver was die dit zou op lossen.
Of is het zowieso aangeraden om altijd absolute te werken?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Controle is altijd goed :)

Overigens was ik gisteravond wat kort - ik bedoel dus niet dat je compiled templates in je document root moet opslaan (bad idea), maar dat je vanuit je document root eenvoudig goede paden kunt achterhalen met basedir e.d.

Alternatief kun je je compiled templates natuurlijk ook in /tmp opslaan, die dir is bedoeld voor temporary output :)

Professionele website nodig?


  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
curry684 schreef op dinsdag 17 juni 2008 @ 09:28:
...
Alternatief kun je je compiled templates natuurlijk ook in /tmp opslaan, die dir is bedoeld voor temporary output :)
Bij Smarty kunnen die compiled templates best een tijd blijven bestaan hoor, dus die zou ik niet in /tmp gooien.

Koop of verkoop je webshop: ecquisition.com


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Mjah /tmp word niet dermate vaak leeggegooid dat het echt boeit. Kunt ook naar /var/cache uitwijken, is ook beetje afhankelijk van de mogelijkheden die je hebt op je server.

Professionele website nodig?


  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
curry684 schreef op dinsdag 17 juni 2008 @ 12:34:
Mjah /tmp word niet dermate vaak leeggegooid dat het echt boeit. Kunt ook naar /var/cache uitwijken, is ook beetje afhankelijk van de mogelijkheden die je hebt op je server.
/tmp of /var/cache lijkt me bij shared hosting niet handig. Bij dedicated is het geen punt. Ik doe het meestal in een dir buiten de webroot.

Koop of verkoop je webshop: ecquisition.com


Verwijderd

misschien een optie om er een '/' voor te zetten?

PHP:
1
require_once '/include/classes/class1.php';

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Verwijderd schreef op woensdag 18 juni 2008 @ 15:11:
misschien een optie om er een '/' voor te zetten?

PHP:
1
require_once '/include/classes/class1.php';
Dus de directory include in de root van je server zetten? Lijkt me niet....

Koop of verkoop je webshop: ecquisition.com

Pagina: 1