<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 17. Решение проблем</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="appendixes.html" title="Part IV. Приложения">
<link rel="prev" href="appendixes.html" title="Part IV. Приложения">
<link rel="next" href="tips.html" title="Chapter 18. Советы">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 17. Решение проблем</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="appendixes.html">Prev</a> </td>
<th width="60%" align="center">Part IV. Приложения</th>
<td width="20%" align="right"> <a accesskey="n" href="tips.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="chapter" title="Chapter 17. Решение проблем">
<div class="titlepage"><div><div><h2 class="title">
<a name="troubleshooting"></a>Chapter 17. Решение проблем</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl><dt><span class="sect1"><a href="troubleshooting.html#smarty.php.errors">Ошибки Smarty/PHP</a></span></dt></dl>
</div>
<p></p>
<div class="sect1" title="Ошибки Smarty/PHP">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="smarty.php.errors"></a>Ошибки Smarty/PHP</h2></div></div></div>
<p>
Smarty может ловить многие ошибки, например отсутствующие атрибуты
тэгов или недопустимые имена переменных. Если это произойдет, вы увидите
ошибку наподобие следующей:
</p>
<div class="example">
<a name="id2744688"></a><p class="title"><b>Example 17.1. Ошибка Smarty</b></p>
<div class="example-contents"><pre class="screen">
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
</pre></div>
</div>
<br class="example-break"><p>
Smarty покажет вам имя шаблона, номер строки и ошибку.
Далее сообщение об ошибке состоит из фактического номера строки в классе
Smarty, где возникла ошибка.
</p>
<p>
Есть определенные ошибки, которые не может поймать Smarty, например
отсутствующие закрывающие тэги. Такие ошибки обычно приводят к ошибкам
разбора PHP на этапе компиляции.
</p>
<div class="example">
<a name="id2744775"></a><p class="title"><b>Example 17.2. Ошибки разбора PHP</b></p>
<div class="example-contents"><pre class="screen">
Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
</pre></div>
</div>
<br class="example-break"><p>
Когда вы встречаетесь с ошибкой разбора PHP, номер строки, в которой
допущена ошибка, будет соответствовать скомпилированному PHP-скрипту,
а НЕ самому шаблону. Обычно вы можете посмотреть на шаблон и увидить
синтаксическую ошибку. Типичные ошибки: отсутствующие закрывающие тэги
для
<a class="link" href="language.function.if.html" title="{if},{elseif},{else}"><code class="varname">{if}{/if}</code></a> или
<a class="link" href="language.function.if.html" title="{if},{elseif},{else}">
<code class="varname">{section}{/section}</code></a>,
или синтаксис логики внутри тэга <code class="varname">{if}</code>.
Если вы не можете найти ошибку, вам может понадобиться открыть
скомпилированный PHP-файл и перейти к номеру строки чтобы выяснить,
в чём заключается ошибка в шаблоне.
</p>
<div class="example">
<a name="id2744828"></a><p class="title"><b>Example 17.3. Другие частые ошибки</b></p>
<div class="example-contents">
<pre class="screen">
Warning: Smarty error: unable to read resource: "index.tpl" in...
or
Warning: Smarty error: unable to read resource: "site.conf" in...
</pre>
<p>
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>
Значение <a class="link" href="api.variables.html#variable.template.dir" title="$template_dir">
<em class="parameter"><code>$template_dir</code></em></a>
неверно, эта директория не существует или файл
<code class="filename">index.tpl</code> не найден в директории
<code class="filename">templates/</code>.
</p></li>
<li class="listitem"><p>
В шаблоне присутствует функция <a class="link" href="language.function.config.load.html" title="{config_load}">
<code class="varname">{config_load}</code></a>
(либо была вызвана функция
<a class="link" href="api.config.load.html" title="config_load()">
<code class="varname">config_load()</code></a>)
и значение
<a class="link" href="variable.config.dir.html" title="$config_dir">
<em class="parameter"><code>$config_dir</code></em></a>
неверно, эта директория не существует или файл
<code class="filename">site.conf</code> находится за пределами этой
директории.
</p></li>
</ul></div>
<p>
</p>
<pre class="screen">
Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
or is not a directory...
</pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Переменная
<a class="link" href="variable.compile.dir.html" title="$compile_dir">
<em class="parameter"><code>$compile_dir</code></em></a>
установлена неверно, эта директория не существует
или <code class="filename">templates_c</code> является файлом, а не
директорией.
</p></li></ul></div>
<pre class="screen">
Fatal error: Smarty error: unable to write to $compile_dir '....
</pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
У веб сервера нет прав на запись в директорию
<a class="link" href="variable.compile.dir.html" title="$compile_dir">
<em class="parameter"><code>$compile_dir</code></em></a>.
Смотрите конец страницы
<a class="link" href="installing.smarty.basic.html" title="Базовая установка">Базовая установка</a>
для получения информации о правах доступа.
</p></li></ul></div>
<pre class="screen">
Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
or is not a directory. in /..
</pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Это означает, что параметр
<a class="link" href="variable.caching.html" title="$caching">
<em class="parameter"><code>$caching</code></em></a> включен, но параметр
<a class="link" href="variable.cache.dir.html" title="$cache_dir">
<em class="parameter"><code>$cache_dir</code></em></a>
установлен неправильно, эта директория не существует
или <code class="filename">cache/</code> является файлом, а не
директорией.
</p></li></ul></div>
<pre class="screen">
Fatal error: Smarty error: unable to write to $cache_dir '/...
</pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Это означает, что параметр
<a class="link" href="variable.caching.html" title="$caching">
<em class="parameter"><code>$caching</code></em></a> включен, но
у веб сервера нет прав на запись в директорию
<a class="link" href="variable.cache.dir.html" title="$cache_dir">
<em class="parameter"><code>$cache_dir</code></em></a>.
Смотрите конец страницы
<a class="link" href="installing.smarty.basic.html" title="Базовая установка">Базовая установка</a>
для получения информации о правах доступа.
</p></li></ul></div>
</div>
</div>
<br class="example-break"><p>
См. также
<a class="link" href="chapter.debugging.console.html" title="Chapter 10. Отладочная консоль">Отладочная консоль</a>,
<a class="link" href="variable.error.reporting.html" title="$error_reporting">
<em class="parameter"><code>$error_reporting</code></em></a> и
<a class="link" href="api.trigger.error.html" title="trigger_error"><code class="varname">trigger_error()</code></a>.
</p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="appendixes.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="appendixes.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="tips.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Part IV. Приложения </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> Chapter 18. Советы</td>
</tr>
</table>
</div>
</body>
</html>