typecho php7.0,php7.0下安装typecho1.0出现Database Server Error解决办法

在PHP7.0环境中安装Typecho1.0后遇到DatabaseServerError,通过启用调试模式发现Mysql适配器不再可用。解决方案是切换到Pdo_Mysql适配器。在config.inc.php中将数据库适配器从Mysql改为Pdo_Mysql,成功解决了数据库连接问题。记得在问题解决后将调试模式关闭。
摘要由CSDN通过智能技术生成

昨天移动网站,在php 7.0的情况下,安装完typecho1.0以后运行,发现Database Server Error的问题。通过本站关于db错误的排查文章《安装typecho后出现数据库错误Database Query Error的解决办法汇总》,我们在根目录下的index.php加入一行调试代码:

#file: index.php

define('__TYPECHO_DEBUG__',true);//add by https://www.typechodev.com

加入后再运行,会出现详细的bug 信息,其中最有效的一行bug信息是:

Adapter Typecho_Db_Adapter_Mysql is not available

Db的Adapter是连接数据库和驱动之间的适配器(即设计模式里面的适配器),这行提示的意思是:当前Mysql适配器在该环境下已经不适用。通过网友提示,在php 7.0环境下Mysql的链接函数已经被干掉,推荐使用mysqli 或者 pdo,我们打开typecho的源码发现,typecho1.0只有Mysql和Pdo两种适配器,如图:

41466621b248057fddf742537012ace8.png

既然Mysql已经废弃,那么只能选用Pdo了。在根目录下找到config.inc.php找到:

$db = new Typecho_db("Mysql","typecho_"); //其中Mysql为默认的适配器,typecho_为表前缀

修改为:

$db = new Typecho_db("Pdo_Mysql","typecho_");

修改保存后运行,发现成功连接数据库。

注意:修改完毕后记得把index.php调回非debug模式,即define('__TYPECHO_DEBUG__',false); 或者直接删去改行代码。

后续

在源码中,我们看到Pdo的类,笔者刚开始直接填入Pdo这个值,但是会报错:

PHP message: PHP Fatal error: Uncaught TypeError: Argument 1 passed to Typecho_Common::exceptionHandle() must be an instance of Exception

所以在适配器的命名上,请填入Pdo_Mysql的值。

版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值