让Emlog5.3.1支持到PHP8.4
前些日子在 破袜子 中 @大致 提到 让WordPress4.9在php8.2下正常运行。 在不知不觉间,PHP已经支持到8.X了。 好快,当初刚接触PHP时还是5.6。 恰好周六,恰好服务器搬家。 索性,在AI的帮助下,尝试让梦幻辰风这个运行在 Emlog5.3.1 版本的部落格,体验到php8的快乐。 通过搜索,在 一年又一年的博客 中找到《Emlog 5.3.1 兼容 PHP 8.0 错误修复》这篇博文,甚至于我还看到今年5月我留下的留言: 感谢大佬分享,我目前还是5.3.1,停留在PHP7.4,想着要不要到8.X的版本。 不过博主没有回我,Ta的更新也停留在2022年2月。 无妨,现在开始,结合 一年又一年的博客 的文章内容和我的操作日志,简单记录一下升级历史。 首先:在2016年或2017年左右,梦幻辰风已经修改版本支持到PHP7.X。 所以,以下所有折腾,都是基于PHP7.0时的版本。而修改Emlog5.3.1支持PHP7.0,我是参考的 星知苑 的博文《PHP7下安装Emlog5.3.1》(注:在本文发布时,Ta的站点已经打不开了。) (注:以下内容好像是CSDN采集的 星知苑 博文,大致方法如下,如果造成影响,后果自负。) 1.修改include/lib/option.php,大概11行修改为mysqli //即:默认MySQL连接方式,mysql或mysqli const DEFAULT_MYSQLCONN = 'mysql'; 改为 const DEFAULT_MYSQLCONN = 'mysqli'; //默认链接方式改为mysqli 2.修改include/lib/database.php,大概16行删除default: case 'mysql': default ://这边需要删除default: 3.修改include/lib/cache.php,大概195行加大括号 $$row['option_name'] = $row['option_value']; 改为 ${$row['option_name']} = $row['option_value']; 4.PHP版本最近更新的比较快,autoload自动加载函数会报错,function.base.php开头的__autoload函数修改如下 spl_autoload_register(function($class) { $class = strtolower($class); if (file_exists(EMLOG_ROOT . '/include/model/' . $class . '.php')) { require_once(EMLOG_ROOT . '/include/model/' . $class . '.php'); } elseif (file_exists(EMLOG_ROOT . '/include/lib/' . $class . '.php')) { require_once(EMLOG_ROOT . '/include/lib/' . $class . '.php'); } elseif (file_exists(EMLOG_ROOT . '/include/controller/' . $class . '.php')) { require_once(EMLOG_ROOT . '/include/controller/' . $class . '.php'); } else { emMsg($class . '加载失败。'); } }); 5.对于部分插件写死了数据库链接方式,需要将 $DB = MySql::getInstance(); 改为 $DB = Database::getInstance(); 等等。 ...