本站从 PHP 7.2 升级 7.4

这事儿其实上一篇文章已经说过了,不过用别的虚拟站点测试的工作失败了,只好直接把主站直接拿来试。

从来没指望一下子就搞定,事实也确实是没有一下子搞定。把 nginx 配置里的 php-fpm 的套接字从 7.2 改到 7.4,又重启了 nginx,刷新首页看到的是说 MySQL 扩展没有安装。sudo apt install php7.4-mysql 后再刷新,嗯?页面出来了一半,在某一篇文章即将显示摘要的地方停住了。点击那篇文章试图查看全文,发现也是只能显示到标题,要显示正文时就会中断,而其他文章无此问题。

基本确定问题出在文章内容上,在编辑区里用程序员熟悉的二分大法最后发现代码外围的 <pre> 标签是罪魁祸首。把每一篇历史文章中的这个标签都去除是不可能的,再说之前好好的,也不应该让人家标签来背锅啊。和这个标签关系密切的是一个名为 Crayon Syntax Highlighter 的插件,用于提供比主题自身更美观一些的代码高亮渲染能力。到插件管理界面中将此插件禁用后再看,症状消失。

然而,没有这款老夫对比多个以后才留下的插件的加持,阅读时的代码展示确实太朴实了。于是又查了一下,发现早在 PHP 7.3 的时候,已经有先行者发现了这个问题,解决方法很简单,打开 wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php,找到 return preg_replace('/[^\w-+#]/msi', '', $id); 这行代码,把 - 之前增加转义字符成为 \-,保存后重新启用插件即可。

至于 PHP 7.4 下的 mcrypt 的事,有空再说了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注