【发布时间】:2018-02-16 14:07:40
【问题描述】:
这很令人困惑,因为我检查了其他答案并应用了它们,但我仍然不断收到这个致命错误。
我在 wordpress 中使用 phpmailer 并且有这个代码:
if (!class_exists('PHPMailer')) {
require_once(ABSPATH . 'wp-content/uploads/phpmailer/_lib/class.phpmailer.php');
}
但是页面没有加载,我得到了错误:
PHP 致命错误:无法在中重新声明类 PHPMailer
(我也尝试过 class_exists('PHPMailer', false)) 但这也产生了同样的错误。)
据我所知,通过检查类不存在然后使用 require_once 我不应该有这个问题。
但我确实...
任何帮助表示赞赏。
【问题讨论】:
-
在您的代码中某处已经有一个名为
PHPMailer的类,它不必在您包含的同一个文件中,只是类的名称必须相同。您收到错误的原因是类名必须是唯一的。您可以对所有代码进行全面搜索吗? PS:命名空间用于避免类名中的这些冲突。 -
如果您注释掉您提供的代码行会发生什么?您提供的代码行下面是什么?
-
您正在使用哪些插件,有些插件会造成此类问题。您可能使用了多个邮件插件。
-
class_exists()可能会返回带有命名空间的意外 假阴性。看看这个How to check if class exists within a namespace?。例如,如果您的代码在命名空间Foo中,那么您的代码会检查类Foo\PHPMailer是否存在。试试class_exists('\\PHPMailer') -
今天是您了解命名空间的日子 =)
标签: php wordpress class phpmailer