WPJAM在PHP8.1中报错,提示
preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated
查阅后发现,PHP 8.1 引入了一个变更,导致向 preg_split()
函数的第二个参数 $subject
传递 null
会引发警告。这是为了强制要求参数 $subject
是一个字符串类型,而不接受 null
。
排查了函数,是这里的问题
wp_parse_id_list()
wp-content/plugins/wpjam-basic/includes/class-wpjam-api.php:674
但是看到包含第674行的方法,没有看到任何与wp_parse_id_list()
有关的东西,也没发现有什么问题,如下所示。
private function sanitize_value($value){ if($this->sanitize_callback){ if(is_callable($this->sanitize_callback)){ return call_user_func($this->sanitize_callback, $value); } }else{ if($this->type == 'int' && !is_null($value)){ return (int)$value; } } return $value; }
由于之前研究了WPJAM机器人的函数回复(WPJAM微信机器人如何使用自定义函数回复?),这时敏锐地发现这里有个call_user_func()
,那么有可能是$this->sanitize_callback
这个的问题,这个方法可能调用了wp_parse_id_list()
,所以当$value
为null
时,导致整体报错。于是继续往下看$this->sanitize_callback
,并没有发现什么问题。
于是不再找了,尝试给$value
加个判断,果然问题好了,看来就是这儿的问题,如下所示,这个小坑太费劲了。
public function sanitize_value($value) { if ($this->sanitize_callback) { if (is_callable($this->sanitize_callback)) { if (!is_null($value)) { return call_user_func($this->sanitize_callback, $value); } } } else { if ($this->type == 'int' && !is_null($value)) { return (int)$value; } } return $value; }
本文作者:𝙕𝙆𝘾𝙊𝙄
文章名称:WPJAM报错preg_split(): Passing null to parameter #2 ($subject) of type string is deprecated
文章链接:https://www.zkcoi.com/365up/program/2729.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。