版本环境升级到PHP8.3.7引发主题的一些错误以及解决方案
PHP 8.3通过引入Just-in-Time(JIT)编译器和新语法特性如new static()和match表达式,显著提升了执行速度和代码的简洁性,为开发高性能、高并发的Web应用程序带来了重大意义。
我上一个主题一直使用的是PHP8.3,但更换主题后因为适配问题,所以还是沿用的php7.4。因为PHP8.3对于非专业作业人员来讲,其提升的性能和好处肉眼不可见,但作为一个喜欢折腾的我来说,有更好的,自然想升升级。
不过,主题带来的不适配问题,也是一个大麻烦,开启后会出现如下错误:
都是引用文件里面的参数引起的错误,都是一些调用代码的变量问题。如图要么是评论变量,要么是归类变量,也不知道对不对,反正就是那么个意思。最开始,我想出的解决方案是整个主题去适配PHP8.3版本,那么这就需要主题添加php版本检查代码,搜了一下百度,大概是引用
<?php
if (version_compare(PHP_VERSION, '8.3', '>=')) {
// PHP版本大于或等于8.3的代码
} else {
// 旧版本的PHP代码
}
但有一个难题,如果在function.php里面添加了这个检查代码,就必须要在合适的地方进行调用,想想有点繁琐。那么有没有很简单的方法解决呢?
还真有,通过AI的帮助,可以在错误的代码处添加错误处理的方法。
例如 $modified = $random->modified;
这个错误就可以使用:
if (isset($random) && isset($random->modified)) {
$modified = $random->modified;
} else {
// 处理错误或提供默认值
$modified = null; // 或者一个合理的默认值
}
那么一一排查,首页 $comment = spam_protection_pre($comment, $post, $result);
出现的错误即可使用
if (isset($comment, $post, $result)) {
$comment = spam_protection_pre($comment, $post, $result);
} else {
// 处理错误情况,例如记录错误或设置默认值
}
果然,添加后完美解决。本来先去问了作者的,但是作者近期比较忙,也没有短时间的适配计划,所以自己动手丰衣足食吧。这种方法应该可以适配别的因为PHP版本升级带来的适配问题。
185371770 可以加我微信么?讨论这个PHP8.3
我不敢升级,就怕出问题。新主题看着很舒服。
你是Rizhi主题的话,先别升级,没做适配,有些插件也不适配。我用默认模板改的,Rizhi主题折腾了后感觉差了点意思,哈哈
Debian 官方仓库还是 PHP8.2,我再等等。
php7.4很稳定,如果不是非必要,也没啥可升级的。
看来PHP版本是能稳定就尽量别升级,等插件等配套跟上来了再慢慢升,以前还以为能升就快点升呢。
最稳定就用7.4版本,我是不行,我有强迫症,能最新就最新。
如果不是程序版本不升级不安全,我连程序都不想升级,好多好用的插件升级了就不能用了。
我现在基本上能不用的插件全部都关闭,只保留备份再,偶尔救急用。