FreeBSD - メンテナンス・トラブルシュート - PHP - Call to undefined method Smarty()
1. 概要 わたしが扱っているいくつかのサイトは PHP のテンプレートエンジン smarty を使用しています。 smarty については別の機会があれば書くことがあるかもしれませんが、本題は。 smarty で記述しているサイトが突然、見えなくなったのです。 そお言えば、smarty の ports を更新した記憶があるぞ。 apache のログを見ると PHP Fatal error: Call to undefined method Smarty() と出ている。 2. 調査 前のバージョンをとっといてよかった /usr/local/share/smarty/Smarty.class.php を前のバージョンと比較してみると・・・。 var $_version = '2.6.27'; が var $_version = '2.6.29'; になっている。 当たり前の話だわな。バージョン変わったんだから。 で、真相は function Smarty() の箇所が public function __construct() になっているのでした。 まあ、基本的な定義はいちいち呼び出さなくてもコンストラクタでやっちゃうってことですな。 わたしは class mySmarty extends Smarty というローカルクラスをつくっているのですが、そこのコンストラクタで $this->Smarty(); と記述していたので、表題のようなエラーが出力されることとなったわけです。 3. 解決 まあ、解決は書くと簡単なことです。 前項の $this->Smarty(); を記述してある行を削除するだけのことでした。
PHP Fatal error: Call to undefined method Smarty()
/usr/local/share/smarty/Smarty.class.php
var $_version = '2.6.27';
var $_version = '2.6.29';
function Smarty()
public function __construct()
class mySmarty extends Smarty
$this->Smarty();