WordPress从4.9升级到6.0,使用的PHP版本从7.0升级到8.0全过程及问题解决.

WordPress从4.9升级到6.0,使用的PHP版本从7.0升级到8.0全过程及问题解决.

步骤:

一.在wordpress后台,更新程序,从wordpress4.9在线升级到6.0.

更新过程会升级wordpress程序与数据库. 一切自动完成.

二.更新wordpress插件

在插件管理处,更新可升级的插件.

三.wordpress 升级到6.0完成.

四.遇到问题.在wordpress后台,F12console中会报 QTags is not defined,

原来错误的原因是由于快速标签脚本的优先加载quicktags.min.js. 在 WordPress 6 及更高版本中,脚本的加载时间比以前的版本稍晚。在以前的 WordPress 版本中,脚本在页面上较早加载,因此在调用QTags.addButton添加按钮时,QTags定义并添加按钮(如预期的那样)。仅供参考:脚本位于:

/wp-includes/js/quicktags.min.js

在 WordPress 版本 6.0 中,Prismatic 调用QTags.addButton. 因此出现“未定义 QTags”错误。

如: QTags.addButton('prismatic_pre', 'pre', '<pre><code class="language-">', '</code></pre>', 'z', 'Preformatted Code');

改为以下就可以.把上面代码放到window.onload中

window.onload = function() {
    QTags.addButton('prismatic_pre', 'pre', '<pre><code class="language-">', '</code></pre>', 'z', 'Preformatted Code');
};

五.升级wordpress使用的PHP版本从7.0到8.0.

安装php8.0 ,修改wordpress 的nginx配置文件,把PHP从7.0改为8.0. 重启nginx.

六.解决升级PHP版本后的错误

把PHP从7.0 升级到php8.0后,网站直接报500错误.打不开页面.

打开PHP的错误报告后,页面打印错误显示:

1.Fatal error: Array and string offset access syntax with curly braces is no longer supported in  xxxxxxxxxxxxx.

PHP8.0不再能够使用花括号来访问数组或者字符串的偏移.需要将{}修改成[] 就可以解决问题

若代码逻辑中含有类似

$asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
需要修改成

$asc = ord($s[0]) * 256 + ord($s[1]) - 65536;

2.Fatal error: Uncaught Error: Call to undefined function create_function() in  xxxxxxxxxxx.

PHP升级到8.0后,报Fatal error: Uncaught Error: Call to undefined function create_function()解决方案.

因为php8.0 已经把create_function移除了.所以有2种解决 方法 .

一.是把create_function改为匿名函数.如下所示

<?php
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo $newfunc(2, M_E) . "\n";
?>

改为

<?php
$newfunc = function($a,$b) { return "ln($a) + ln($b) = " . log($a * $b); };
echo $newfunc(2, M_E) . "\n";
?>

二.是使用polyfill.

地址 https://github.com/php5friends/polyfill-create_function

把 上面github上的文件保存为php80polyfill.php,放到wordpress根目录.

在根目录 index.php中加

include 'php80polyfill.php';

wp-admin/admin-ajax.phpwp-admin/admin-ajax.php这2个文件中加 :require_once __DIR__ . '/php80polyfill.php';

 

至此,wordpress升级完成.

可能还有些问题.你可以通过禁用插件或更换插件来解决.

 

WordPress从4.9升级到6.0,使用的PHP版本从7.0升级到8.0全过程及问题解决.
标签: