第十七章 如何解决问题

目录
Smarty/PHP的错误

Smarty/PHP的错误

    Smarty可以捕获很多错误,如缺少标记属性或者不合法的变量名称。如果发生这样的情况,你会看到类似以下的错误提示:

例子17-1. Smarty错误

Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
       in /path/to/smarty/Smarty.class.php on line 1041

Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
       in /path/to/smarty/Smarty.class.php on line 1041

    Smarty提示你模板名,行号和错误。然后是该错误发生的Smarty类中的实际行号。

    有一些特定的错误是Smarty无法捕获的,如缺少关标记。这些类型的错误将以PHP编译时的解析错误的形式出现。

例子17-2. PHP解析错误

Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75

    一旦遇到PHP解析错误,其错误行的行号对应于编译的PHP脚本,而不是对应于模板本身。通常你可以查看模板而找到语法错误所在。通常你应该查看的地方有:缺少{if}{/if}{section}{/section}的关标记,或者一个{if}标记内的语法逻辑。如果你找不到错误,你可能需要打开编译后的PHP文件,找到那行,然后找出模板中对应的错误何在。

例子17-3. 其它常见错误

Warning: Smarty error: unable to read resource: "index.tpl" in...
or
Warning: Smarty error: unable to read resource: "site.conf" in...

Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
or is not a directory...

  • $compile_dir设置不正确,目录不存在或者templates_c是一个文件而不是目录。
Fatal error: Smarty error: unable to write to $compile_dir '....

Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
or is not a directory. in /..

  • 这意味着$caching已经激活,然而$cache_dir未正确设置,目录不存在,cache/是一个文件而不是一个目录。

Fatal error: Smarty error: unable to write to $cache_dir '/...

    参见debugging$error_reporting以及trigger_error()