PHP 8.3.6下WordPress多站点迁移后出现wp_kses()未定义错误求助
WordPress多站点PHP版本迁移后wp_kses()未定义致命错误排查
错误详情
将WordPress多站点从PHP 7.4迁移至PHP 8.3.6后,触发如下致命错误:
Fatal error: Uncaught Error: Call to undefined function wp_kses() in /home/devnote/www/wp-includes/functions.php:6073 Stack trace: #0 /home/devnote/www/wp-includes/functions.php(5554): wp_trigger_error() #1 /home/devnote/www/wp-includes/class-wpdb.php(1333): _deprecated_function() #2 /home/devnote/www/wp-content/sunrise.php(11): wpdb->escape() #3 /home/devnote/www/wp-includes/ms-settings.php(47): include_once('...') #4 /home/devnote/www/wp-settings.php(155): require('...') #5 /home/devnote/www/wp-config.php(107): require_once('...') #6 /home/devnote/www/wp-load.php(50): require_once('...') #7 /home/devnote/www/wp-blog-header.php(13): require_once('...') #8 /home/devnote/www/index.php(17): require('...') #9 {main} thrown in /home/devnote/www/wp-includes/functions.php on line 6073
升级至WordPress 6.7.1(最新版)后,错误行号更新,错误信息变为:
Fatal error: Uncaught Error: Call to undefined function wp_kses() in /home/devnote/www/wp-includes/functions.php:6098 Stack trace: #0 /home/devnote/www/wp-includes/functions.php(5579): wp_trigger_error() #1 /home/devnote/www/wp-includes/class-wpdb.php(1333): _deprecated_function() #2 /home/devnote/www/wp-content/sunrise.php(11): wpdb->escape() #3 /home/devnote/www/wp-includes/ms-settings.php(47): include_once('...') #4 /home/devnote/www/wp-settings.php(156): require('...') #5 /home/devnote/www/wp-config.php(107): require_once('...') #6 /home/devnote/www/wp-load.php(50): require_once('...') #7 /home/devnote/www/wp-blog-header.php(13): require_once('...') #8 /home/devnote/www/index.php(17): require('...') #9 {main} thrown in /home/devnote/www/wp-includes/functions.php on line 6098
关联代码片段
错误触发的/wp-includes/functions.php相关代码:
$message = wp_kses( $message, array( 'a' => array( 'href' => true ), 'br' => array(), 'code' => array(), 'em' => array(), 'strong' => array(), ), array( 'http', 'https' ) );
已执行的排查动作
- 禁用所有插件
- 更换默认主题
- 升级WordPress至最新版6.7.1
以上操作均未解决问题。
多站点管理面板截图

可能的原因分析
- Sunrise.php加载顺序冲突:从调用栈可见,错误起源于
sunrise.php第11行调用已废弃的wpdb->escape()方法,触发废弃提示时,wp_kses()所在的kses.php核心文件尚未完成加载。PHP 8.x对错误处理的 stricter 特性放大了这个加载顺序问题,PHP 7.4环境下该问题可能未被触发或被忽略。 - 核心文件缺失/损坏:尽管已升级至WP 6.7.1,但
wp-includes/kses.php文件可能未正确上传、存在损坏,导致wp_kses()函数未被定义。需重新校验WordPress核心文件完整性。 - 自定义Sunrise.php兼容性问题:
sunrise.php通常用于多站点域名映射等高级配置,若该文件为自定义或旧版本遗留,可能在PHP 8.x环境下与核心加载逻辑冲突。可临时重命名该文件,观察错误是否消失。 - PHP配置干扰:PHP 8.3.6的
auto_prepend_file等配置可能干扰WordPress核心文件加载流程,导致kses.php未被正确引入,需检查php.ini或.htaccess中的相关配置。
内容的提问来源于stack exchange,提问作者Dmitriano
相关产品推荐
相关产品推荐

