php 5.3には色々な変更点があるが、Smartyも3系で大きな変更が行われており、
既存システムやサイトを動かそうとすると、はまりどころが多いようです。
現時点で、はまった点を忘れないように書いておきます。
・phpのエラーレポートレベルが変更されている
E_DEPRECATED が追加されていて、将来使えなくなるコードがエラーとして表示される。(標準状態)
ソースを変更しないといけないことには、変わりがないが、取り急ぎ稼働させたい場合は、
レポートレベルを変更して、エラーが出ないようにすることは可能。
error_reporting = E_ALL & ~E_NOTICE
↓
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
・Smarty 3.0.7からpopup系のプラグインが削除されている
吹き出しみたいな感じで使えたpopupプラグインが削除されている。
継続して使いたい場合は、テンプレートに自分で記載するか、自前プラグインを作る必要有り。
(まあ、新しいサイトの場合は、使わないと思うので、大した問題ではないと思う)
・Smartyの"html_options"等のソースが変
html_options等を利用しているテンプレートで、2回目以降の表示の際に、
Call to undefined function smarty_function_escape_special_chars() in /usr/lib64/Smarty/plugins/function.html_options.php
などのエラーが表示されて、異常終了するケースが発生した。
該当のfunctionは、function.html_options.phpの33行目あたりで、require_onceでロードされているが、
キャッシュされた2回目以降の実行でうまくロード出来ない模様。
この問題は根が深そうな感じだが、取り急ぎ動作させるには、require_once → requireにすれば、
動作可能になる。
根本的な原因調査は、継続中。(Smarty本体の可能性が高いと感じている)
phpのincludeとinclude_once及びrequireとrequire_onceは、使いどころをよく考える必要有り。
コメントする