Table of Contents
Smarty は、タグの属性が不足していたり、誤った変数名を指定していた時など、 多くのエラーをキャッチする事ができます。 キャッチすると次の例のようなエラーが表示されます。
Example 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 コンパイル時にパースエラーで終了します。
Example 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 ファイルを開いて行番号のあたりを調べる必要があります。
Example 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
に Web サーバによる書き込み権限がありません。
Smarty のインストール
のページ下部のパーミッションの項を参照してください。
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
に Web サーバによる書き込み権限がない、という意味です。
Smarty のインストール
のページ下部のパーミッションの項を参照してください。
デバッグ、
$error_reporting
および
trigger_error()
の項も参照してください。