PHP8升级后WP-Bakery构建器报错:未加括号三元表达式不支持
解决PHP8下WP-Bakery的三元运算符致命错误
PHP8开始不再支持未加括号的嵌套三元表达式,你遇到的错误就是因为原代码里的三元嵌套没有明确括号导致的。
原代码的逻辑是优先使用HTTP_X_FORWARDED_HOST,如果不存在就用HTTP_HOST,再不存在才用SERVER_NAME,所以正确的写法是给后面的三元表达式加上括号,明确运算顺序:
$host = isset( $s['HTTP_X_FORWARDED_HOST'] ) ? $s['HTTP_X_FORWARDED_HOST'] : ( isset( $s['HTTP_HOST'] ) ? $s['HTTP_HOST'] : $s['SERVER_NAME'] );
替换原代码行之后,网站就能正常访问了。另外也可以用更清晰的if-else写法替代三元表达式,避免后续出现类似问题:
if (isset($s['HTTP_X_FORWARDED_HOST'])) { $host = $s['HTTP_X_FORWARDED_HOST']; } elseif (isset($s['HTTP_HOST'])) { $host = $s['HTTP_HOST']; } else { $host = $s['SERVER_NAME']; }
内容的提问来源于stack exchange,提问作者Traian Liposchi
相关产品推荐
相关产品推荐

