Réponse courte, comme vous avez besoin d'aller d'un répertoire de votre testpage.php pour accéder au répertoire qui contient votre répertoire smarty, comme vous l'avez fait pour l'entête.php vous devez faire la même chose pour le Smarty inclure des répertoires.
$smarty->setTemplateDir('../smarty/templates');
Une façon de le faire est bien définir comment obtenir dans le répertoire racine de votre projet, puis en utilisant que dans le comprennent.
par exemple. dans testPage.php
define("PATH_TO_ROOT", "../");
puis dans header.php
$smarty->setTemplateDir(PATH_TO_ROOT.'smarty/templates');
$smarty->setCompileDir(PATH_TO_ROOT.'smarty/templates_c');
$smarty->setCacheDir(PATH_TO_ROOT.'smarty/cache');
$smarty->setConfigDir(PATH_TO_ROOT.'smarty/configs');
Cela rend alors trivial à configurer les répertoires de Smarty, d'un autre fichier PHP
qui peut être dans un autre endroit. par exemple. dans un répertoire appelé "tests/webtests/frontend" vous pouvez définir le PATH_TO_ROOT comme "../../../" et les appels pour installer Smarty fonctionneront toujours.
Vous pouvez également faire en sorte que header.php vérifie que PATH_TO_ROOT est défini, pour éviter qu'il soit appelé directement. En guise de remarque, vous pouvez envisager de ne pas avoir le répertoire templates_c et le cache dans le répertoire Smarty, mais plutôt créer un répertoire séparé pour écrire les données générées (et donc potentiellement vulnérables aux attaques par injection). Pour mes projets, j'ai un répertoire 'var' situé à côté du répertoire racine du projet, qui contient tous les répertoires pour les fichiers journaux, les caches, les modèles générés, etc. Tout ce qui est 'incertain' dans le sous-répertoire à propos de ce qui est sûr et de ce qui n'est pas beaucoup plus facile.
Avez-vous essayé de fournir le chemin absolu? – shawndreck
Avez-vous déjà résolu ce problème? – Ted