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改为匿名函数.如下所示
改为
二.是使用polyfill.
地址 https://github.com/php5friends/polyfill-create_function
把 上面github上的文件保存为php80polyfill.php,放到wordpress根目录.
在根目录 index.php中加
include 'php80polyfill.php';
在wp-admin/admin.php
及wp-admin/admin-ajax.php
这2个文件中加 :require_once __DIR__ . '/php80polyfill.php';
至此,wordpress升级完成.
可能还有些问题.你可以通过禁用插件或更换插件来解决.
最后更新于 2023年4月27日