php - PHPMailer 在 null 上调用成员函数 isSMTP()
问题描述
我正在尝试更新我的 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 类方法并显示isSMTP
,但是当我稍后调用它时,它会返回错误。
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"))
返回 false (这意味着该类存在)。在这种情况下,您没有设置$oPhpMailer
,这意味着$oPhpMailer = null
. 这就是错误的意思:你不能运行null->isSMTP()
.
很可能这段代码运行了两次——第一次$oPhpMailer
设置是因为类不存在(这就是你得到get_class_methods
输出的原因)。该类第二次存在,因此该变量为空。
尝试添加其他
if (!class_exists("\\PHPMailer")) {
// ...
} else {
$oPhpMailer = new \PHPMailer();
}
推荐阅读
- java - 为什么zookeeper-cluster不能通过host-pc上的ip链接?
- powershell - 如何根据过滤器查询返回具有特定 ms-DS-ConsistencyGuid 的用户
- coq - 指导完成证明
- javascript - 在jquery中处理大数组数据
- node.js - 使用服务帐户密钥列出来自谷歌驱动器的公开共享文件,而不是获取公共文件
- c# - 封装属性
- image - 伪代码:如何从位和字节解码 PNG 文件?
- python-3.x - url.parse Python2.7 等效
- ruby - 获取导致异常的对象信息
- javascript - jquery 使用 .after() 在表中添加行