第 16章トラブルシューティング

目次
Smarty/phpエラー

Smarty/phpエラー

Smartyは、タグの属性が不足していたり、誤った変数名を指定していた時のような多くのエラーをキャッチする事ができます。 キャッチすると次の例に似たようなエラーが表示されます。

例 16-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コンパイル時にパースエラーで終了します。

例 16-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ファイルを開いて行番号のあたりを調べる必要があります。