Smarty 图标

您可以根据商标声明使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

如需赞助、广告、新闻或其他询问,请通过以下途径联系我们

使用 Smarty 的网站

广告

第 20 章。故障排除

Smarty/PHP 错误

Smarty 可以捕获许多错误,例如缺少标签属性或格式错误的变量名称。如果发生这种情况,您将看到类似于以下内容的错误

示例 20.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 编译时解析错误。

示例 20.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 文件并转到行号以找出模板中相应错误的位置。

示例 20.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 '/...

    
Warning: filemtime(): stat failed for /path/to/smarty/cache/3ab50a623e65185c49bf17c63c90cc56070ea85c.one.tpl.php 
in /path/to/smarty/libs/sysplugins/smarty_resource.php

   
  • 这意味着您的应用程序注册了一个自定义错误处理程序(使用 set_error_handler()),它不尊重给定的 $errno。如果由于某些原因,这是您指定的自定义错误处理程序的行为,请在您注册自定义错误处理程序之后调用 muteExpectedErrors()


另请参阅 调试