问题
目前博客使用了一个很旧但是很好用的语法高亮器crayon-syntax-highlighter
。没想到升级到php8后,却出现了问题,而且这个问题只有在进入文章页面时才出现。升级完php8我一开始没有注意检查,过了6天后才发现一直博客不能访问。接下来着手处理这个问题
处理
根据报错信息主要由两处,一处是
1 2 |
Uncaught TypeError: implode(): Argument #1 ($separator) must be of type string, array given in /path/to/wordpress/wp-content/plugins/crayon-syntax-highlighter/util/crayon_util.class.php:73 |
根据提示信息,php8将implode
的两个参数对调了位置,因此根据提示的行数直接进行调整即可。
另一处是
1 2 |
Uncaught TypeError: get_class(): Argument #1 ($object) must be of type object, string given in /path/to/wordpress/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php:414 |
根据提示是因为get_class
不让传入空参数了。那做如下调整
在对应文件头部添加如下内容
1 2 3 |
class CrayonCompitibleNull { } |
在function element
的头部添加下面的三行
1 2 3 4 |
if ($element === NULL) { $element = new CrayonCompitibleNull; } |
后记
经过验证,问题解决。还是期待有个一直更新的好用的代码高亮器啊~