Вопрос или проблема
Пытаюсь установить WordPress без XAMPP на своем локальном компьютере. Информация о версии:
WordPress: 5.2.3
PHP: 7.3.9
Apache: 2.4.41
При доступе по следующему URL – http://localhost:8080/wordpress/wp-admin/install.php я вижу следующее в логах WordPress:
[16-Sep-2019 18:47:34 UTC] PHP Фатальная ошибка: Неперехваченная ошибка: Вызов несуществующей функции mysql_connect() в C:\apps\httpd-2.4.41-win64-VS16\Apache24\htdocs\wordpress\wp-includes\wp-db.php:1643
Я попробовал решения, доступные в Интернете, но все еще вижу эту ошибку.
Решения, которые я пробовал до сих пор:
Добавил следующее в мой wp-config.php:
define( 'WP_USE_EXT_MYSQL', true);
Добавил следующее в php.ini:
extension_dir = "ext"
extension=php_mysqli.dll
Вот мой phpinfo:
Server API Apache 2.0 Handler
Поддержка виртуальных каталогов включена
Путь к файлу конфигурации (php.ini) C:\windows
Загруженный файл конфигурации C:\apps\php-7.3.9\php.ini
Проверить этот каталог на наличие дополнительных .ini файлов (нет)
Дополнительные .ini файлы, которые были проанализированы (нет)
PHP API 20180731
PHP Extension 20180731
Zend Extension 320180731
Сборка Zend Extension API320180731,TS,VC15
Сборка PHP Extension API20180731,TS,VC15
Отладочная сборка нет
Поточная безопасность включена
Поточная API Windows Threads
Обработка сигналов Zend отключена
Менеджер памяти Zend включен
Поддержка многобайтовых строк отключена
Поддержка IPv6 включена
Поддержка DTrace отключена
Зарегистрированные потоки PHP php, file, glob, data, http, ftp, zip, compress.zlib, phar
Зарегистрированные транспортные потоки сокетов tcp, udp
Зарегистрированные фильтры потоков convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*
Как говорит Пат Дж., вам не следует использовать define( ‘WP_USE_EXT_MYSQL’, true);, если вам не нужны старые функции mysql, которые вам не нужны, если вы используете PHP 7x и WordPress 5x. Вам нужно перезапустить Apache после изменения php.ini. Что у вас в секции mysqli в вашем phpinfo? Убедитесь, что extension_dir также установлено в php.ini. Вам может потребоваться включить ведение журнала ошибок в php.ini, чтобы увидеть, загружается ли ваше расширение mysqli, установив display_startup_errors = On и задать error_log [имя файла] или syslog.
Ответ или решение
Ошибка Uncaught Error: Call to undefined function mysql_connect()
возникает из-за того, что в PHP 7 и выше расширение mysql
было удалено и заменено на mysqli
или PDO_MySQL
. Ваша версия WordPress также не поддерживает старые функции, поэтому в данной ситуации необходимо убедиться, что вы используете правильные настройки.
Вот несколько шагов, которые помогут вам решить эту проблему:
-
Убедитесь, что у вас установлено и включено расширение
mysqli
:- Откройте ваш файл
php.ini
, который, как видно из вашей диагностики, находится по адресуC:\apps\php-7.3.9\php.ini
. - Найдите строку, содержащую
extension=php_mysqli.dll
, и убедитесь, что она не закомментирована (т.е. перед ней нет;
). - Убедитесь, что строка для
extension_dir
выглядит корректно и указывает на папку с расширениями PHP. Например:extension_dir = "C:\apps\php-7.3.9\ext"
- Откройте ваш файл
-
Настройте вывод ошибок в PHP:
- Включите вывод ошибок, чтобы легче выявлять проблемы. Добавьте или измените следующие строки в вашем
php.ini
:display_errors = On display_startup_errors = On error_reporting = E_ALL log_errors = On error_log = "C:\path\to\your\error.log" ; Укажите путь к файлу для записи логов
- Включите вывод ошибок, чтобы легче выявлять проблемы. Добавьте или измените следующие строки в вашем
-
Перезапустите сервер Apache:
- После любых изменений в файле
php.ini
не забудьте перезапустить Apache, чтобы изменения вступили в силу.
- После любых изменений в файле
-
Проверьте конфигурацию WordPress:
- Откройте файл
wp-config.php
и убедитесь, что в нем не используется строкаdefine( 'WP_USE_EXT_MYSQL', true);
. Этот параметр не нужен и может вызывать ошибки в сочетании с новыми версиями PHP и WordPress.
- Откройте файл
-
Проверьте установленные расширения PHP:
- Создайте файл
info.php
в корневом каталоге вашего проекта WordPress (например,C:\apps\httpd-2.4.41-win64-VS16\Apache24\htdocs\wordpress
), содержащий следующий код:<?php phpinfo(); ?>
- Откройте этот файл в веб-браузере, перейдя по адресу
http://localhost:8080/wordpress/info.php
. Найдите раздел сmysqli
и убедитесь, что он включен и отобразится корректно.
- Создайте файл
-
Проверьте наличие MySQL на локальной машине:
- Убедитесь, что сервер базы данных MySQL запущен и доступен. Если вы используете SQLite, убедитесь, что
wp-config.php
настроен соответствующим образом, чтобы использовать SQLite.
- Убедитесь, что сервер базы данных MySQL запущен и доступен. Если вы используете SQLite, убедитесь, что
Следуя этим шагам, вы должны устранить ошибку mysql_connect()
. Если ошибка продолжает появляться, стоит проверить, используются ли ссылки на старые функции в сторонних плагинах или темах, которые вы могли установить.