我正在迁移一个基于 Smarty 的网站,我试图满足所有先决条件,这样就不会有任何问题,但是(“总是”我可能会添加)我有这个问题,在安装所有必要的包后网站不工作(我在浏览器中有 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”:127\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给出了相同的错误,但情况与这里不同。更有趣的是,在另一台服务器上它工作正常,所以我的猜测是存在配置故障而不是编程问题。