我已经将debugging
选项设置为true
,但是当smarty模板中出现错误时(即没有针对特定smarty_modifier
的相应插件),没有输出任何内容信息。
更新
对于任何想要尝试的人来说,这是我能想到的最简单的模板:
{$var|nosuch_modifier}
答案 0 :(得分:1)
1-首先,您可以检查error_reporting是否已打开。这通常在php.ini中完成,但您可以将这些语句放在php源代码之上。
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
并确保其他地方没有禁用。
2- smarty可能会报错作为抛出异常。您可以定义一个全局异常处理程序来捕获它们,这是一个示例;
try {
// place your code here
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
答案 1 :(得分:0)
评论更新:
我能想到的唯一原因是你将compile_check
设置为false。
$tpl->compile_check = false;
在这种情况下,Smarty将显示最新的编译源代码,无论您对tpl文件执行什么操作。那么,您是否检查并将compile_check
设置为true?
$tpl->compile_check = true;
<击>尝试击>
<击>ini_set('display_errors', true);
error_reporting(E_ALL);
在PHP代码中 。
答案 2 :(得分:0)
可以手动设置Smarty错误报告。
$smarty->error_reporting = E_ALL ^ E_NOTICE;
Smarty.class.php的一些评论
错误静音已完成,因为有些人实现了自定义 error_handlers使用http://php.net/set_error_handler和一些 理由不明白以下段落:
重要的是要记住标准的PHP错误处理程序是 完全绕过error_types指定的错误类型 除非回调函数返回FALSE。 error_reporting()设置 将无效,您的错误处理程序将被调用 - 但是你仍然可以读取当前的值 error_reporting并采取适当的行动。特别值得注意的是这一点 如果导致错误的语句被预先添加,则值将为0 由@ error-control运算符。
Smarty故意在file_exists()上使用@filemtime() filemtime()在某些地方。原因包括 - @filemtime()几乎是使用额外file_exists()的两倍 - 在file_exists()和filemtime()之间打开一个可能的竞争条件,使用简单的@filemtime()方法不存在。