ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

AkelosのPHPテンプレートのセキュリティチェックを回避するには

Akelosで、PHPテンプレート中で自前のクラスのメソッドを呼んだり、いろいろPHPコードを埋め込み始めると次のようなエラーに出くわします。

テンプレート ...../foo.tpl セキュリティエラー:

    ・テンプレート内で次のような 変数 を使用できません: $_ce
    ・テンプレート内で次のような 関数 を使用できません: $max

AkelosのViewは、デフォルトではテンプレートファイルのPHPコードを解析し、怪しげな関数やメソッド呼び出しがあれば上記のようにエラーとするようにしています。

しかし、ちょこっとPHPを書いただけで一々エラーにされるのも癪です。そもそも一般利用者がテンプレートを直接弄ることができるのであればともかく、開発者しか触らないようなテンプレートでこの手のセキュリティチェックをされても邪魔です。たとえ間違ってexit()しようとも、正しい挙動としてのexit()か、開発者が間違って埋め込んだexit()か、どうして区別できましょうか。

このセキュリティチェックを回避させるには、app/config/boot.php または config.php で、AK_TEMPLATE_SECURITY_CHECK 定数をfalseに設定します。

define('AK_TEMPLATE_SECURITY_CHECK', false);