phpMailer函数

时间:2017-01-11 19:26:57

标签: php smarty phpmailer

我有一个继承的网站,在迁移到新的托管网站并升级到更新的Smarty 2.6.3和PHP 5.6之后一直工作得很好。今天我在一些用户投诉之后做了一些测试,他们没有收到来自网站的电子邮件(会员注册)。

今天开始收到此错误Fatal error: Cannot redeclare class Smarty。调查显示系统中有两个$temp = new Smarty()语句 - 一个在用户登录设置Smarty时调用,另一个在类Emailer中调用,使用phpmailer

如果我尝试引用最初的Smarty设置变量,则会出现call to null错误。如果我删除电子邮件中的智能代码,电子邮件甚至不会被调用。正如我所说,已经工作了好几年......过去一个月没有修改代码......

这是两个模块中的智能初始化:

// 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();

...}

电子邮件功能中对Smarty的需求是使用Smarty模板作为电子邮件正文。

1 个答案:

答案 0 :(得分:0)

这是一件简单的事情 - 你的问题不在于你是在创建两个Smarty实例,而是在同一个文件上调用InputIterator两次。这样做:

require

这将解决你的致命错误,但是,你现在可能会遇到一个不同的错误,即你创建的两个实例不是你需要的,但这是一个单独的问题。

虽然我在这里,为什么你在使用古老的Smarty 2.x? 3.x好多了。