这几天打算建一个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 | $thumb=$this->fields->thumbnail |
登录后台的时候,又发现上面飘着一行 “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); |
否则会出现后台无法修改内容 或者干脆登录不了等问题。