搞Typecho碰到的几个问题

这几天打算建一个typecho博客玩玩,顺便把几年前写的主题用上,虽然写的不咋地但好歹也是花了自己不少功夫,扔在硬盘吃灰也是可惜。

先去看了下typecho官网,依然是1.1版本没变,在本地打开以前建立的项目 结果直接显示500错误,搜了下原因是php7已经放弃了使用mysql方法连接数据库,需要修改配置文件config.inc.php

1
$db = new Typecho_Db('Mysql', 'typecho_');

修改为:

1
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');

成功打开博客后,发现页面内的图片都加载不出来了,翻翻源码发现判断文章是否含有图片的语句中的isset()一直都返回false,网上的解释是,php7判断的时候会依次判断,php5则是预加载后判断,也就是说isset($this->fields->thumbnail)这种写法,php5会先执行$this->fields->thumbnail后判断,而php7则是把$this->fields->thumbnail当成一个变量进行判断。typecho没做相关的处理,所以暂时只能改一下写法,比如:

1
2
$thumb=$this->fields->thumbnail
if(isset($thumb)){...}

登录后台的时候,又发现上面飘着一行 “Notice: Trying to access array offset on value of type null” ,一搜又是php7.4和typecho的兼容问题,github上的方法是把admin\common.php32行的:

1
$params = parse_url($currentMenu[2]);

改为

1
$params = parse_url(isset($currentMenu[2]) ? $currentMenu[2] : null);

最后,如果启用https的话需要修改配置文件config.inc.php,添加一条:

1
define('__TYPECHO_SECURE__',true);

否则会出现后台无法修改内容 或者干脆登录不了等问题。