Я только что обновился до 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', '', 'connectionsxions', ' 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, но он не работает с ним. Что мне здесь не хватает?
mysql_connect
используется только как запасной вариант, когдаmysqli
не обнаружен. Казалось бы, у вас нет ни одногоmysqli
илиmysql
установлен (mysqli
рекомендуется,mysql
не рекомендуется)Ответы:
Похоже, у вас не установлен и / или не включен mysqli на вашем сервере. IIRC
mysqli
был добавлен в php в версии 5.5, и сmysql
тех пор старое расширение устарело и полностью устарело. Если вы обновили очень старую версию PHP, возможно, вам все еще нужен дополнительный шаг включенияmysqli
.(WordPress проверяет существование,
mysqli
и только если он не существует, пробует старыеmysql
функции.)источник
В дополнение к ответу @MarkKaplun я публикую некоторый код из класса wpdb:
Вот как
wpdb::use_mysqli
это определяется:Это начато с:
и тогда в
wpdb
конструкторе мы имеем:источник
Чтобы решить эту проблему, вам нужно отредактировать файл php.ini.
беги, где
php.ini
я нашел свой в:/etc/php/php.ini
(хотя я не знаю, какую ОС вы используете, просто найдите вашу)Посмотрите на эти два файла:
и раскомментируйте их. Вуаля, это сделало бы работу в любое время.
Дополнительная информация: https://wiki.archlinux.org/index.php/PHP.
источник
Вы используете Xamppp 7.x для Windows?
Это случилось со мной, когда я обновил свой Xampp 5.6 до Xampp 7.1. Изучив файл конфигурации C: \ Xampp \ php \ php.ini , я заметил множество ошибок, связанных с именами расширений PHP (в них отсутствуют префикс php_ и суффикс .dll). Один из них связан с MySQL.
Неправильная настройка, которую я нашел там:
Правильная настройка (после редактирования этой строки):
Исправление, которое решило мою проблему.
Кстати, не забудьте исправить все другие неправильные настройки (правильное имя расширений можно увидеть в C: \ xampp \ php \ ext).
источник