PHPMailer 在 null 上调用成员函数 isSMTP()
PHPMailer Call to a member function isSMTP() on null
我正在尝试更新我的 Wordpress 插件,因为 PHPMailer 的位置在 wordpress 5.5 中移动了。
我现在正在 Wordpress 5.1 版中进行测试,遇到以下错误
Fatal error: Call to a member function isSMTP() on null in (path) on line (line)
如下面的代码所示,我尝试了 var_dumping class 方法,它显示 isSMTP
但是当我稍后调用它时它 returns错误。
if (!class_exists("\PHPMailer")) {
global $wp_version;
if ( version_compare( $wp_version, '5.5', '<' ) ) {
require_once(\ABSPATH . \WPINC . "/class-phpmailer.php");
require_once(\ABSPATH . \WPINC . "/class-smtp.php");
require_once(\ABSPATH . \WPINC . "/class-pop3.php");
$oPhpMailer = new \PHPMailer();
}else {
require_once(\ABSPATH . \WPINC . "/PHPMailer/PHPMailer.php");
require_once(\ABSPATH . \WPINC . "/PHPMailer/SMTP.php");
require_once(\ABSPATH . \WPINC . "/class-pop3.php");
$oPhpMailer = new PHPMailer();
}
}
var_dump(get_class_methods($oPhpMailer));
$oPhpMailer->isSMTP();
看起来像 if (!class_exists("\PHPMailer"))
returns false(这意味着 class 存在)。在这种情况下,您没有设置 $oPhpMailer
,这意味着 $oPhpMailer = null
。这就是错误的意思:你不能 运行 null->isSMTP()
.
很可能此代码是 运行 两次 - 第一次设置 $oPhpMailer
因为 class 不存在(这就是为什么你得到 get_class_methods
输出)。 class 第二次存在,所以变量为空。
尝试添加一个 else
if (!class_exists("\PHPMailer")) {
// ...
} else {
$oPhpMailer = new \PHPMailer();
}
我正在尝试更新我的 Wordpress 插件,因为 PHPMailer 的位置在 wordpress 5.5 中移动了。
我现在正在 Wordpress 5.1 版中进行测试,遇到以下错误
Fatal error: Call to a member function isSMTP() on null in (path) on line (line)
如下面的代码所示,我尝试了 var_dumping class 方法,它显示 isSMTP
但是当我稍后调用它时它 returns错误。
if (!class_exists("\PHPMailer")) {
global $wp_version;
if ( version_compare( $wp_version, '5.5', '<' ) ) {
require_once(\ABSPATH . \WPINC . "/class-phpmailer.php");
require_once(\ABSPATH . \WPINC . "/class-smtp.php");
require_once(\ABSPATH . \WPINC . "/class-pop3.php");
$oPhpMailer = new \PHPMailer();
}else {
require_once(\ABSPATH . \WPINC . "/PHPMailer/PHPMailer.php");
require_once(\ABSPATH . \WPINC . "/PHPMailer/SMTP.php");
require_once(\ABSPATH . \WPINC . "/class-pop3.php");
$oPhpMailer = new PHPMailer();
}
}
var_dump(get_class_methods($oPhpMailer));
$oPhpMailer->isSMTP();
看起来像 if (!class_exists("\PHPMailer"))
returns false(这意味着 class 存在)。在这种情况下,您没有设置 $oPhpMailer
,这意味着 $oPhpMailer = null
。这就是错误的意思:你不能 运行 null->isSMTP()
.
很可能此代码是 运行 两次 - 第一次设置 $oPhpMailer
因为 class 不存在(这就是为什么你得到 get_class_methods
输出)。 class 第二次存在,所以变量为空。
尝试添加一个 else
if (!class_exists("\PHPMailer")) {
// ...
} else {
$oPhpMailer = new \PHPMailer();
}