【问题标题】:WordPress using deprecated mysql_connect no matter what I do [duplicate]无论我做什么,WordPress都使用已弃用的mysql_connect [重复]
【发布时间】:2021-09-11 19:04:55
【问题描述】:

今天我安装了最新版本的 WordPress,一切都很好,除了当我尝试配置数据库访问时。 WordPress 坚持使用 mysql_connect,它在 5.X 以上的 PHP 版本中是未定义的。我已经尝试通过定义这个来设置 wp-config:

define('WP_USE_EXT_MYSQL', false);

出于测试目的,也尝试将其设置为 true,但没有任何效果。

另外,我已经在 PHP 中设置了所有扩展,包括 mysqlnd 和 mysqli。基本上我在 stackoverflow 中做了所有事情,但仍然一无所获。

出现以下错误:

PHP 致命错误:未捕获的错误:调用未定义的函数 mysql_connect()

我正在使用 PHP 7.4 和 MySQL 8.0。此外,WordPress 是最新版本。

【问题讨论】:

  • 请分享更多细节——这甚至与编程有关吗?

标签: php mysql wordpress deprecated


【解决方案1】:

在Wordpress的源码中,决定使用mysqli还是mysql的条件如下wp-db.php:615,变量$this->use_mysqli

if ( function_exists( 'mysqli_connect' ) ) {
    $this->use_mysqli = true;

    if ( defined( 'WP_USE_EXT_MYSQL' ) ) {
        $this->use_mysqli = ! WP_USE_EXT_MYSQL;
    }
}

如果函数mysqli_connect 存在,你会没事的,因为后面的if 语句决定在mysql_connectmysqli_connect 之间使用是在wp-db.php:1630 中的函数db_connect() 中,简化如下:

if ( $this->use_mysqli ) {
  // [...]
  @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
}else{
  // [...]
  $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
}

我会说原因是你没有安装mysqli,可能吗?

您能否确保已安装正确的软件包。在 debian 机器上,我必须安装 php-mysql 包,例如

apt install php-mysql

【讨论】:

    猜你喜欢
    • 2014-03-14
    • 1970-01-01
    • 2017-10-06
    • 2016-06-18
    • 2017-05-14
    • 1970-01-01
    • 2013-05-08
    • 2020-03-07
    • 2018-01-24
    相关资源
    最近更新 更多