无法重新声明类PHPMailer
这是令人困惑的,因为我已经检查了其他答案并应用了它们,但我仍然不断得到这个致命错误 我在wordpress中使用phpmailer,代码如下:无法重新声明类PHPMailer,php,wordpress,class,phpmailer,Php,Wordpress,Class,Phpmailer,这是令人困惑的,因为我已经检查了其他答案并应用了它们,但我仍然不断得到这个致命错误 我在wordpress中使用phpmailer,代码如下: if (!class_exists('PHPMailer')) { require_once(ABSPATH . 'wp-content/uploads/phpmailer/_lib/class.phpmailer.php'); } 但是,该页面未加载,我得到错误信息: PHP致命错误:无法在中重新声明类PHPMailer (我还尝试了类_ex
if (!class_exists('PHPMailer')) {
require_once(ABSPATH . 'wp-content/uploads/phpmailer/_lib/class.phpmailer.php');
}
但是,该页面未加载,我得到错误信息:
PHP致命错误:无法在中重新声明类PHPMailer
(我还尝试了类_exists('PHPMailer',false)),但这也产生了相同的错误。)
就我所见,通过检查类不存在,然后使用require_一次,我不应该有这个问题
但我确实
感谢您的帮助。我认为这可能是一个比名称空间更简单的问题:使用第二个默认为true的
自动加载
参数,这意味着如果尚未加载类,它将自动尝试加载该类,并且可以在include\u路径中找到该类。最终的结果是,如果将该参数保留为其默认值,则实际上会加载它两次,因此会出现重新声明错误。请尝试以下方法:
if (!class_exists('PHPMailer', false)) {
require_once(ABSPATH . 'wp-content/uploads/phpmailer/_lib/class.phpmailer.php');
}
其他新闻:。它为您管理所有的类加载。即使是微不足道的脚本也值得使用。PHPMailer实例已经在wordpress中运行。您不需要再次包含库。请检查此链接以供参考
在代码中的某个地方已经有一个名为PHPMailer
的类,它不必位于包含的同一文件中,只需类的名称相同即可。出现错误的原因是类名必须是唯一的。你能把你所有的代码都搜索一遍吗?PS:名称空间用于避免类名中的这些冲突。如果注释掉提供的代码行,会发生什么情况?您提供的代码行下面是什么?您正在使用哪些插件?一些插件正在创建此类问题。您可能已经为邮件使用了多个插件。class\u exists()
可能会对名称空间返回意外的假阴性。看看这个。例如,如果您的代码位于命名空间Foo
中,那么您的代码将检查类Foo\PHPMailer
是否存在。尝试使用class\u exists('\\PHPMailer')
这将是您了解名称空间=)的日子,谢谢!我在wp包含中“发现”了PHPMailer并链接到该版本,而不是我上传的“额外”版本。现在一切都好了