PHP: Call to undefined function mysqli_connect() — что делать
В PHP нет модуля для работы с MySQL и MariaDB. В Ubuntu он ставится пакетом php8.3-mysql, после установки нужно перезапустить PHP-FPM. Если же в сообщении mysql_connect без буквы i, программа написана для PHP старше 7.0.
Содержание 8
Как выглядит ошибка
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /var/www/example.com/db.php:4PHP не знает функцию mysqli_connect: модуль mysqli не установлен или не включён. В журнале после этой строки идут строки Stack trace: — цепочка вызовов, которая привела к ошибке. Для поиска причины хватает первой строки.
Если программа подключается к базе через PDO, та же причина выглядит иначе:
PHP Fatal error: Uncaught PDOException: could not find driver in /var/www/example.com/db.php:4could not find driver — у PDO нет модуля для базы из строки подключения. Для MySQL и MariaDB его ставит тот же пакет.
Как поставить модуль
Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
sudo apt install php8.3-mysqlЕсли система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter. Пакет добавляет в PHP модули mysqli, mysqlnd и pdo_mysql. Перезапустите PHP-FPM, чтобы сайт их увидел:
sudo systemctl restart php8.3-fpmЕсли команда ничего не ответила, PHP перезапущен. Проверьте, что модуль на месте:
php -m | grep mysqliЕсли в ответе строка mysqli — модуль установлен. Откройте страницу ещё раз. Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.
Если база PostgreSQL и PDO пишет could not find driver, поставьте php8.3-pgsql.
Если в сообщении mysql_connect
PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /var/www/example.com/db.php:4Функции mysql_… без буквы i устарели в PHP 5.5.0 и удалены в PHP 7.0.0. Никакой пакет их не вернёт. Программе нужна новая версия, где подключение к базе переписано на mysqli или PDO. Если это ваш код — передайте сообщение разработчику.
Если это WordPress
WordPress при той же причине показывает своё сообщение о том, что в PHP нет расширения MySQL. Разбор с теми же шагами — WordPress: нет расширения MySQL.
Если модуль стоит, а ошибка осталась
- Вы не перезапустили PHP-FPM — выполните
sudo systemctl restart php8.3-fpm. - На сервере несколько версий PHP, и модуль поставлен не для той, на которой работает сайт. Версию PHP сайта видно в файле настроек nginx, в строке
fastcgi_pass:php8.3-fpm.sock— это PHP 8.3. Поставьте пакет с тем же номером. - Модуль выключен. Включите его:
sudo phpenmod mysqli, затем перезапустите PHP-FPM.
Ошибки рядом
| Что видите | Что делать |
|---|---|
Call to undefined function с другим именем | какой модуль поставить |
Access denied for user | MySQL не принял логин или пароль |
Unable to locate package php8.3-mysql | apt не нашёл пакет |
| другая ошибка PHP | найдите её в списке |
Источники
- Исходный код PHP 8.3.6: zend_execute.c — тексты Undefined variable, Undefined array key и Call to undefined function.
- Исходный код PHP 8.3.6: pdo_dbh.c — текст could not find driver: для базы из строки подключения не найден модуль PDO.
- Справка PHP: mysql_connect() — модуль mysql устарел в PHP 5.5.0 и удалён в PHP 7.0.0.
- Справка PHP: изменения в PHP 7.0 — удалены функции ext/mysql и ereg.
- PHP: неподдерживаемые версии — поддержка PHP 5.6 закончилась 31 декабря 2018 года.
- Пакет php8.3-mysql в Ubuntu 24.04 — модули mysqli, mysqlnd и pdo_mysql для PHP 8.3.
Сверено 14 октября 2026 года.
Что почитать дальше
- Ошибки PHPкак читать сообщение и где журнал.
- Как установить PHP на UbuntuPHP-FPM и модули для MySQL и PostgreSQL.
- Ошибки MySQL и MariaDBесли модуль стоит, но база не пускает.