2010-11-23 7 views
1

Je suis en train d'obtenir la configuration Smarty et de travailler, afin que je puisse installer le projet open-source iciSmarty Modificateurs PHP

http://sourceforge.net/projects/assign-calc/

Après avoir suivi les instructions d'installation, je reçois coincé avec le message d'erreur suivant

<b>Fatal error</b>: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template &quot;/var/www/dev/calendar/skins/rpc/tmpl/page/rpc_header.tpl&quot; on line 5 &quot;   {$application.long_name|escape}&quot; unknown modifier &quot;escape&quot;' in /usr/lib/php5/Smarty/Smarty/sysplugins/smarty_internal_templatecompilerbase.php:423 
Stack trace: 
#0 /usr/lib/php5/Smarty/Smarty/sysplugins/smarty_internal_compile_private_modifier.php(62): Smarty_Internal_TemplateCompilerBase-&gt;trigger_template_error('unknown modifie...', 5) 
#1 /usr/lib/php5/Smarty/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(279): Smarty_Internal_Compile_Private_Modifier-&gt;compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL) 
#2 /usr/lib/php5/Smarty/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(123): Smarty_Internal_TemplateCompilerBase-&gt;callTagCompiler('private_modifie...', Array, Array) 
#3 /usr/lib/php5/Smarty/Smarty/sysplugins/smarty_internal_compile_private_print_expression.php(68): Smarty_Internal_TemplateCompilerBase in <b>/usr/lib/php5/Smarty/Smarty/sysplugins/smarty_internal_templatecompilerbase.php</b> on line <b>423</b><br /> 

Après un peu de googler, je pense que le problème est la cause Smarty ne pas lire le modificateur d'échappement dans le répertoire plugins.

Comment résoudre ce problème? J'ai même essayé 777 les permissions sur smarty, mais cela n'a rien changé ...

Répondre

1

Avez-vous chargé la configuration de smarty correctement? En particulier, avez-vous défini correctement le chemin du plugin, via la commande

$smarty->addPluginsDir('path/to/plugins'); 

?

+0

Je n'ai pas besoin de ce type d'installation, mais j'utilise une installation propre de Smarty et une installation propre de assign-calc. Basé sur smarty n'étant pas placé dans le fichier de configuration (pour assign-calc), je pense qu'il est juste de supposer que ce dossier devrait être chargé automatiquement (au moins, il devrait basé sur la documentation Smarty que j'ai vu ... Où voulez-vous Je recommande de placer cette ligne –

+0

Vous pouvez trouver les meilleures pratiques dans la documentation Smarty Cependant, vous avez raison, une installation propre devrait charger les plugins par défaut correctement Peut-être assign-calc se fait une configuration sur le moteur smarty? –

+0

Pour le moment J'ai ajouté dans votre ligne de code et il semble fonctionner, mais je suis toujours ouvert pour savoir pourquoi il ne détecte pas cela automatiquement en premier lieu, car je crois que sa mauvaise pratique pour coder le chemin absolu d'un fichier en particulier quand il être déplacé vers un autre serveur –

0

Un chemin système absolu est l'approche la plus rapide et la plus sûre. Vous pouvez utiliser des chemins relatifs, mais assurez-vous que le php include_path contient ce qui est nécessaire pour le trouver. Vous pouvez également utiliser SMARTY_DIR pour partir de votre chemin.

1

Je suis le développeur de la Calculatrice de Projet de Recherche, et j'ai trouvé cette question SO lors de la recherche du même problème pour un autre utilisateur. Le code a été dans la nature pendant quelques semaines et nous découvrons certaines de ces choses que d'autres institutions l'installent.

J'ai pu le faire fonctionner pour l'autre utilisateur en appelant explicitement parent::__construct(); avant toute chose dans le constructeur de la classe inc/rpc_smarty.inc.php. Je publierai une nouvelle version sous peu, mais pour l'instant vous devriez juste pouvoir corriger ce constructeur comme ci-dessous. N'hésitez pas à me contacter via le lien dans la page wiki des instructions d'installation du projet si vous avez d'autres questions ou si vous rencontrez d'autres problèmes.

public function __construct($config) 
{ 
    parent::__construct(); 
    $this->config = $config; 
    ... 
    ... 
}