【发布时间】:2017-05-26 17:34:02
【问题描述】:
我有一个继承的站点,并且在迁移到新的托管站点并升级到更新的 Smarty 2.6.3 和 PHP 5.6 后一直运行良好。今天我在一些用户抱怨他们没有收到来自网站的电子邮件(会员注册)后进行了一些测试。
今天开始收到此错误Fatal error: Cannot redeclare class Smarty。调查显示,系统中有两条$temp = new Smarty() 语句——一个在用户登录设置Smarty 时调用,第二个在类Emailer 中使用phpmailer。
如果我尝试引用初始 Smarty 设置变量,我会收到 call to null 错误。如果我删除电子邮件中的聪明代码,电子邮件甚至不会被调用。正如我所说,几年来一直工作良好......过去一个月代码没有变化......
这是两个模块中的 smarty 初始化:
// Setup.php
require('../Smarty-2.6.30/libs/Smarty.class.php');
$_TEMP = new Smarty();
class Emailer {...
require('../Smarty-2.6.30/libs/Smarty.class.php');
$temp = new Smarty();
...}
emailer功能中Smarty的需要是邮件正文使用Smarty模板。
【问题讨论】:
-
意识到我应该提到在电子邮件功能中需要 Smarty 是为电子邮件正文使用 Smarty 模板。
-
上面的代码,来自一个文件?
-
对不起 - 不。第二个是在一个单独的类文件中,它设置了电子邮件功能(cEmailer.php)。 setup.php 由 index.php 代码调用。 cEmailer 由发送电子邮件的各个模块调用。