先去看了下 typecho 官网,依然是1.1版本没变,在本地打开以前建立的项目 结果直接显示500错误,搜了下原因是 php7 已经放弃了使用 mysql 方法连接数据库,需要修改配置文件 config.inc.php 把
$db = new Typecho_Db('Mysql', 'typecho_');
修改为:
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
成功打开博客后,发现页面怎么那么素净呢?我的高清大图都哪去了?翻翻源码发现判断文章是否含有图片的语句中的 isset() 一直都返回 false ,网上的解释是, php7 判断的时候会依次判断, php5 则是预加载后判断,也就是说
isset($this->fields->thumbnail)
这种写法, php5 会先执行 $this->fields->thumbnail 后判断,而php7则是把 $this->fields->thumbnail 当成一个变量进行判断。typecho没做相关的处理,所以暂时只能改一下写法,比如:
$thumb=$this->fields->thumbnail if(isset($thumb)){...}
登录后台的时候,又发现上面飘着一行 “Notice: Trying to access array offset on value of type null” ,一搜又是 php7.4 和 typecho 的兼容问题, github 上的方法是把 admin\common.php 32 行的:
$params = parse_url($currentMenu[2]);
改为
$params = parse_url(isset($currentMenu[2]) ? $currentMenu[2] : null);
如果启用 https 的话需要修改配置文件 config.inc.php ,添加一条:
define('__TYPECHO_SECURE__',true);
否则会出现后台无法修改内容 或者干脆登录不了等问题。
如果登陆后台报错 :Fatal error: Array and string offset access syntax with curly braces is no longer supported in /www/wwwroot/var/Json.php on line 370
这是因为PHP7.4不再支持使用大括号访问数组以及字符串的偏移 php7.4不再支持数组{}写法,统一为数组[]
修改位置:/www/wwwroot/var/Json.php on line 370 的 400 行左右
修改为:$seq = (ord($value[0]) % $rule['num']) + 1;
以此类推!