WordPress 4.8.1 использует mysql_connect, который не работает с PHP 7

Я просто обновился до PHP 7 только для того, чтобы найти, что WordPress 4.8.1 (последняя версия) по-прежнему использует mysql_connect в модуле wp-db.php, но mysql_connect устарел.

Следующий код берется из wp-db-php, строки 1567-1571:

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

Вот результат, когда я пытаюсь запустить свою программу:

Неустранимая ошибка: Непринятая ошибка: вызов неопределенной функции mysql_connect () в D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp-db.php: 1570
Трассировки стека:
# 0 D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp-db.php (658): wpdb-> db_connect ()
# 1 D: \ ApacheHtdocs \ ConneXions \ wp-includes \ load.php (404): wpdb -> __ construct ('root', '', 'connexions', 'localhost')
# 2 D: \ ApacheHtdocs \ ConneXions \ wp-settings.php (106): require_wp_db ()
# 3 D: \ ApacheHtdocs \ ConneXions \ wp-config.php (104): require_once ('D: \ ApacheHtdocs …')
# 4 D: \ ApacheHtdocs \ ConneXions \ wp-load.php (37): require_once ('D: \ ApacheHtdocs …')
# 5 D: \ ApacheHtdocs \ ConneXions \ wp-blog-header.php (13): require_once ('D: \ ApacheHtdocs …')
# 6 D: \ ApacheHtdocs \ ConneXions \ index.php (17): require ('D: \ ApacheHtdocs …')
# 7 {main} брошен в D: \ ApacheHtdocs \ ConneXions \ wp-includes \ wp-db.php в строке 1570

Я не могу поверить, что WordPress говорит, что он рекомендует PHP 7, но он не работает с ним. Что мне здесь не хватает?

Solutions Collecting From Web of "WordPress 4.8.1 использует mysql_connect, который не работает с PHP 7"

Это похоже на то, что на вашем сервере не установлена ​​и / или включена mysqli . IIRC mysqli был добавлен в php в версии 5.5, а более mysql расширение mysql было устарело и полностью удалилось с тех пор. Если вы обновляетесь с очень старой версии PHP, возможно, вам еще нужен дополнительный шаг включения mysqli .

(WordPress проверяет существование mysqli и только если он не существует, пытается использовать более старые функции mysql .)

В дополнение к ответу @MarkKaplun, я отправляю код из класса wpdb:

Вот как определяется wpdb::use_mysqli :

Он активирован:

 /** * Whether to use mysqli over mysql. * * @since 3.9.0 * @access private * @var bool */ private $use_mysqli = false; 

а затем в конструкторе wpdb имеем:

 /* Use ext/mysqli if it exists and: * - WP_USE_EXT_MYSQL is defined as false, or * - We are a development version of WordPress, or * - We are running PHP 5.5 or greater, or * - ext/mysql is not loaded. */ if ( function_exists( 'mysqli_connect' ) ) { if ( defined( 'WP_USE_EXT_MYSQL' ) ) { $this->use_mysqli = ! WP_USE_EXT_MYSQL; } elseif ( version_compare( phpversion(), '5.5', '>=' ) || ! function_exists( 'mysql_connect' ) ) { $this->use_mysqli = true; } elseif ( false !== strpos( $GLOBALS['wp_version'], '-' ) ) { $this->use_mysqli = true; } } 

Что вы должны сделать для решения этой проблемы, так это отредактировать файл php.ini.

запускать где php.ini я нашел мой на:

/etc/php/php.ini (хотя я не знаю, какая ОС вы используете, просто найдите свою)

Ищите эти два файла:

 extension=pdo_mysql.so extension=mysqli.so 

и раскомментировать их. Вуала, это сделало бы работу в любое время.

Дальнейшее чтение: https://wiki.archlinux.org/index.php/PHP