PHP 8.x不支持花括号数组/字符串偏移语法的修复求助
快速修复PHP 8+下WordPress script-loader.php的字符串偏移量报错
PHP 8.0及以上版本彻底移除了用大括号{}访问字符串偏移量的语法,这就是触发致命错误的核心原因。以下是无需整体升级WordPress的紧急修复方案:
具体修改步骤
- 通过服务器文件管理器或FTP,找到路径
/home1/xxxxxx/public_html/wp-includes/script-loader.php的文件 - 定位到处理TinyMCE初始化的foreach代码块,将所有大括号访问字符串的写法替换为方括号:
- 把
$value{0}改成$value[0] - 把
$value{strlen( $value ) - 1}改成$value[strlen( $value ) - 1]
- 把
修改后的完整代码片段
// Do "by hand" translation from PHP array to js object. // Prevents breakage in some custom settings. $init_obj = ''; foreach ( $tinymce_settings as $key => $value ) { if ( is_bool( $value ) ) { $val = $value ? 'true' : 'false'; $init_obj .= $key . ':' . $val . ','; continue; } elseif ( ! empty( $value ) && is_string( $value ) && ( ( '{' == $value[0] && '}' == $value[strlen( $value ) - 1] ) || ( '[' == $value[0] && ']' == $value[strlen( $value ) - 1] ) || preg_match( '/^\(?function ?\(/', $value ) ) ) { $init_obj .= $key . ':' . $value . ','; continue; } $init_obj .= $key . ':\"' . $value . '\",'; } $init_obj = '{' . trim( $init_obj, ' ,' ) . '}';
额外提醒
- 修改WordPress核心文件有被版本更新覆盖的风险,建议先备份原
script-loader.php文件 - 长期来看,还是要尽快将WordPress升级到支持PHP 8.1+的版本(推荐6.0及以上),避免后续出现更多兼容性问题
内容的提问来源于stack exchange,提问作者Merkucio
相关产品推荐
相关产品推荐

