<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>PHP8 on 梦幻辰风</title>
    <link>https://www.mhcf.net/tags/php8/</link>
    <description>Recent content in PHP8 on 梦幻辰风</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Sat, 06 Dec 2025 21:34:00 +0800</lastBuildDate>
    <atom:link href="https://www.mhcf.net/tags/php8/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>让Emlog5.3.1支持到PHP8.4</title>
      <link>https://www.mhcf.net/2025/12/%E8%AE%A9emlog5.3.1%E6%94%AF%E6%8C%81%E5%88%B0php8.4/</link>
      <pubDate>Sat, 06 Dec 2025 21:34:00 +0800</pubDate>
      <guid>https://www.mhcf.net/2025/12/%E8%AE%A9emlog5.3.1%E6%94%AF%E6%8C%81%E5%88%B0php8.4/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;封面图&#34; loading=&#34;lazy&#34; src=&#34;https://www.mhcf.net/images/2025/12/64de1765027948.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;前些日子在 &lt;code&gt;破袜子&lt;/code&gt; 中 &lt;code&gt;@大致&lt;/code&gt; 提到 &lt;code&gt;让WordPress4.9在php8.2下正常运行。&lt;/code&gt; 在不知不觉间，PHP已经支持到8.X了。&lt;/p&gt;
&lt;p&gt;好快，当初刚接触PHP时还是5.6。&lt;/p&gt;
&lt;p&gt;恰好周六，恰好服务器搬家。&lt;/p&gt;
&lt;p&gt;索性，在AI的帮助下，尝试让梦幻辰风这个运行在 &lt;code&gt;Emlog5.3.1&lt;/code&gt; 版本的部落格，体验到php8的快乐。&lt;/p&gt;
&lt;p&gt;通过搜索，在 &lt;code&gt;一年又一年的博客&lt;/code&gt; 中找到《Emlog 5.3.1 兼容 PHP 8.0 错误修复》这篇博文，甚至于我还看到今年5月我留下的留言：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;感谢大佬分享，我目前还是5.3.1，停留在PHP7.4，想着要不要到8.X的版本。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;不过博主没有回我，Ta的更新也停留在2022年2月。&lt;/p&gt;
&lt;p&gt;无妨，现在开始，结合 &lt;code&gt;一年又一年的博客&lt;/code&gt; 的文章内容和我的操作日志，简单记录一下升级历史。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;首先：在2016年或2017年左右，梦幻辰风已经修改版本支持到PHP7.X。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以，以下所有折腾，都是基于PHP7.0时的版本。而修改Emlog5.3.1支持PHP7.0，我是参考的 &lt;code&gt;星知苑&lt;/code&gt; 的博文《PHP7下安装Emlog5.3.1》（注：在本文发布时，Ta的站点已经打不开了。）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（注：以下内容好像是CSDN采集的 &lt;code&gt;星知苑&lt;/code&gt; 博文，大致方法如下，如果造成影响，后果自负。）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1.修改&lt;code&gt;include/lib/option.php&lt;/code&gt;，大概11行修改为mysqli&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;//即：默认MySQL连接方式，mysql或mysqli
const DEFAULT_MYSQLCONN = &amp;#39;mysql&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;改为&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;const DEFAULT_MYSQLCONN = &amp;#39;mysqli&amp;#39;;
//默认链接方式改为mysqli
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;2.修改&lt;code&gt;include/lib/database.php&lt;/code&gt;，大概16行删除default：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;case &amp;#39;mysql&amp;#39;:
default ://这边需要删除default：
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;3.修改&lt;code&gt;include/lib/cache.php&lt;/code&gt;，大概195行加大括号&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$$row[&amp;#39;option_name&amp;#39;] = $row[&amp;#39;option_value&amp;#39;];
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;改为&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;${$row[&amp;#39;option_name&amp;#39;]} = $row[&amp;#39;option_value&amp;#39;];
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;4.PHP版本最近更新的比较快，autoload自动加载函数会报错，function.base.php开头的__autoload函数修改如下&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;spl_autoload_register(function($class) {
$class = strtolower($class);
if (file_exists(EMLOG_ROOT . &amp;#39;/include/model/&amp;#39; . $class . &amp;#39;.php&amp;#39;)) {
require_once(EMLOG_ROOT . &amp;#39;/include/model/&amp;#39; . $class . &amp;#39;.php&amp;#39;);
} elseif (file_exists(EMLOG_ROOT . &amp;#39;/include/lib/&amp;#39; . $class . &amp;#39;.php&amp;#39;)) {
require_once(EMLOG_ROOT . &amp;#39;/include/lib/&amp;#39; . $class . &amp;#39;.php&amp;#39;);
} elseif (file_exists(EMLOG_ROOT . &amp;#39;/include/controller/&amp;#39; . $class . &amp;#39;.php&amp;#39;)) {
require_once(EMLOG_ROOT . &amp;#39;/include/controller/&amp;#39; . $class . &amp;#39;.php&amp;#39;);
} else {
emMsg($class . &amp;#39;加载失败。&amp;#39;);
}
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;5.对于部分插件写死了数据库链接方式，需要将 &lt;code&gt;$DB = MySql::getInstance();&lt;/code&gt; 改为 &lt;code&gt;$DB = Database::getInstance();&lt;/code&gt; 等等。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
