迁移到 PHP 7.3 服务器甚至禁用所有插件后,Wordpress 博客遇到技术难题

Wordpress blog with technical difficulties after migrating to a PHP 7.3 server and even disabling all plugins

我正在尝试完成向具有 PHP 7.3 的新服务器的迁移。我来自一台 PHP 5.6 的服务器,我已经成功地将其他 WP 博客从旧服务器迁移到新服务器,没有任何问题。

我看到的错误是带有此错误消息的灰色页面:

The site is experiencing technical difficulties.

因此,在我看来,由于 PHP 7.3 安装不正确而导致的问题。因为它实际上对其他 WP 博客和 Plesk 都非常有效。

我在其他帖子中读到,我的 wp-config.php 文件可能缺少这一行:define('WP_USE_EXT_MYSQL', true); 但事实并非如此。

而且我还在其他地方读到,新服务器可能缺少 nd_mysqli PHP 扩展名。但事实并非如此。它已启用。我已经停用 mysqli PHP 扩展。在那之后,我也没有运气重新启动 apache2。

所以...我错过了什么?停用插件也不会使 WP 站点正常工作,这真的很奇怪。为此,我已将 plugins 文件夹重命名为 plugins_old 并且我一直看到相同的错误消息:(

我忘了显示整个错误日志:

AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/wp-db.php:1645
Stack trace:\n#0 /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/wp-db.php(639): wpdb->db_connect()
#1 /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/load.php(427): wpdb->__construct('secret...', 'other_secret', 'anothe......', 'localhost')
#2 /var/www/vhosts/mywpsite.com/httpdocs/wp-settings.php(120): require_wp_db()
#3 /var/www/vhosts/mywpsite.com/httpdocs/wp-config.php(82): require_once('/var/www/vhosts...')
#4 /var/www/vhosts/mywpsite.com/httpdocs/wp-load.php(37): require_once('/var/www/vhosts...')
#5 /var/www/vhosts/mywpsite.com/httpdocs/wp-blog-header.php(13): require_once('/var/www/vhosts...')
#6 /var/www/vhosts/mywpsite.com/httpdocs/index.php(17): require('/var/www/vhosts...')
#7 {main}\n thrown in /var/www/vhosts/mywpsite.com/...'

澄清一下,数据库、用户和密码都是正确的。

PHP 已安装模块

php -m
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
ionCube Loader
json
libxml
mbstring
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache
the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured)

更新

现在新服务器中的所有其他 WP 网站都无法正常工作。我有 PHP 7.2 和 PHP 7.3。不过,所有网站都使用 PHP 7.3。但是 Prestashop 网站保持 运行 流畅。

我已经尝试在 Plesk 中设置 PHP 7.2,结果相同。

错误都一样Call to undefined function mysql_connect

更新 2

禁用 mysqli 似乎会使事情变得更糟。因为它为所有 WP 博客生成 Call to undefined function mysql_connect。即使是永远不会奏效的那个。

所以我会保持 mysqli 扩展程序处于启用状态。

最后它是一个问题的组合,但我最终将问题解决了一个 WP 插件,它可能没有 PHP 7.3(可能 7.2 也没有,因为我尝试过它)支持.插件文件夹是 cystats.

所以在开始时不知何故与这个 WP 博客不兼容,这与启用 mysql 扩展有关。关闭它后,它仍然不起作用,但似乎我没有重新启动 Apache,所以我看到了旧的 Call to undefined function mysql_connect() 错误。

后来,所有 WP 博客都出了问题(禁用 mysqli 扩展),最后,在单独破坏原始 WP 博客之后,我意识到错误不一样。现在是:

Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_error() in /var/www/vhosts/mywpsite.com/httpdocs/wp-content/plugins/cystats/includes/cystats.class.php:1455

所以最后一切都解决了,显然WP与PHP 7.3兼容,并且必须禁用mysql扩展才能很好地使用它。一些插件可能不是最新的,这就是为什么它们不能与 PHP 7.3 一起工作以及为什么它们在 PHP 5.6.

上工作的原因

因此,在将 WP 博客迁移到新设置后,如果您不了解插件可能会破坏迁移。

感谢您的评论,他们也很有帮助。

正如我在这里读到的那样 Wordpress Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /wp-includes/wp-db.php:1570 似乎添加这一行:define('WP_USE_EXT_MYSQL', true); 会使插件错误消失,但是如果我设置这个定义。