私は Smarty に基づく Web サイトを移行しており、問題が発生しないようにすべての前提条件を満たそうとしましたが、(「いつものように」追加する可能性があります) 必要なすべてのパッケージをインストールした後、 Web サイトが機能しません (ブラウザーに HTTP 500 エラーが表示されます) エラー ログに次のエラーが見つかりました。
PHP 致命的なエラー: 47 行目の /var/www/vhosts/placeholder.com/httpdocs/includes/sysplugins/smarty_internal_templatebase.php の非オブジェクトに対するメンバー関数 createTemplate() の呼び出し
これは実際には、このコードがある index.php ファイルから表示されます
$smarty = new SmartyEC($page->template);
$smarty->display('index.tpl');
インデックス テンプレートの表示に問題がありますが、その理由がわかりません。
より多くのコンテキストを提供するために、コンストラクターは次のようになります。
<?php
require 'Smarty.class.php';
class SmartyEC extends Smarty{
function SmartyEC()
{
function __construct()
{
parent::__construct();
$appname ='website';
$path= Utils::getTemplatesPath();
$this->caching = false;
}
}
}
?>
サーバーには PHP 5.3.2 があります。インストールされ、最新バージョンの Smarty もインストールされています。構成パスを確認し、それに応じて変更し、ファイルのインクルードも変更しました。
前もって感謝します!
更新 #1
次のように関数定義を削除しようとしました:
class SmartyEC extends Smarty {
public function __construct()
{
parent::__construct();
$appname ='website';
$path= Utils::getTemplatesPath();
$this->caching = false;
}
}
しかし、エラーは次のようになります。
/var/www/vhosts/website/httpdocs/includes/sysplugins/smarty_internal_templatebase.php:127 にメッセージ「テンプレート ファイル 'index.tpl' を読み込めません」を含むキャッチされない例外 'SmartyException' があります:\nスタック トレース:\n#0 /var /www/vhosts/website/httpdocs/includes/sysplugins/smarty_internal_templatebase.php(374): Smarty_Internal_TemplateBase->fetch('index.tpl', NULL, NULL, NULL, true)\n#1 /var/www/vhosts/ website/httpdocs/index.php(58): Smarty_Internal_TemplateBase->display('index.tpl')\n#2 {main}\n /var/www/vhosts/website/httpdocs/includes/sysplugins/smarty_internal_templatebase でスローされます。 127行目のphp
更新 2
同じエラーが発生するこのトピックCodeIgniter + Smarty = Errorを見つけましたが、ここと同じ状況ではありません。さらに興味深いのは、他のサーバーでは正常に動作するという事実です。私の推測では、プログラミングの問題ではなく、構成の問題があると思われます。