Содержание
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...
Значение
$template_dir
неверно, эта директория не существует или файлindex.tpl
не найден в директорииtemplates/
.В шаблоне присутствует функция
{config_load}
(либо была вызвана функцияconfig_load()
) и значение$config_dir
неверно, эта директория не существует или файлsite.conf
находится за пределами этой директории.
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 '....
У веб сервера нет прав на запись в директорию
$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 '/...
Это означает, что параметр
$caching
включен, но у веб сервера нет прав на запись в директорию$cache_dir
. Смотрите конец страницы Базовая установка для получения информации о правах доступа.
См. также
Отладочная консоль,
$error_reporting
и
trigger_error()
.