将PHP 7.1升级到7.3后调用未定义的函数MySQL_Connect()

时间:2019-09-03 作者:square_eyes

我在Debian/Raspbian buster服务器上托管自己的WP站点。

我将PHP 7.1升级到7.3,网站崩溃了。

我不明白为什么它会坏,因为mysql\\u connect()不推荐用于7。x(虽然wp-db.php似乎广泛使用它,而wp一直在提醒您升级到7.3)。因此,我希望在全新的7.3安装php中启用各种模块。ini。MySQLi 被注释掉了,所以我启用了它(和其他一些),但仍然得到相同的错误。

Call to undefined function mysql_connect()... wp-db.php on line 1643

这是。。。

    if ( WP_DEBUG ) {
  1643                  $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );

Php info多次引用MySQLi,所以我假设它正在运行。同样适用于mysqlnd.

我知道这个问题经常被问到。但我已经尝试了一切。

如何让我的网站在7.3上重新运行?

编辑:我尝试通过重命名dir来禁用插件,得到了相同的结果。我怀疑问题出在我的7.3 PHP配置上,因为7.0在fie上运行。

2 个回复
SO网友:bueltge

我是说你的php。ini已更改,请检查条目extension=php_mysqll.dll.

(如果您不知道使用的php.ini在哪里-请参阅https://stackoverflow.com/questions/8684609/dude-wheres-my-php-ini)

此条目是否处于活动状态,没有; 在字符串之前。php更改后。ini您需要重新启动mysql,如sudo /etc/init.d/mysql restart.

另请注意,请检查mysql是否已安装为较新的php版本,可以通过控制台或phpinfo().

sudo apt-get install mysql-server mysql-common php7.3 php7.3-mysql

SO网友:Tom J Nowell

您的问题是:

非常旧的WordPress对WP Core的自定义修改更新到WordPress的新版本以解决此问题

例如,如果我们查看当前的WP源代码,它不会使用mysql_connect 多年来没有:

https://github.com/WordPress/WordPress/blob/master/wp-includes/wp-db.php#L1638

            if ( WP_DEBUG ) {
                mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
            } else {
                // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
                @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
            }
仅仅改变是不够的mysql_connectmysqli_real_connect 不过,还有其他变化。所以更新到最新的WordPress