PHP на сервере Linux, PHP-FPM (версия уточняется)

PHP на сервере: После обновления PHP исчезло расширение mysqli

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

После смены версии PHP расширение mysqli может оказаться не установленным или не активированным именно для обработчика сайта. Типичный признак — Call to undefined function mysqli_connect() либо Class "mysqli" not found, хотя PHP CLI на сервере может показывать другой набор модулей.

В этой статье
  1. Что происходит и когда применима инструкция
  2. Причины и диагностические признаки
  3. Подробная пошаговая инструкция
  4. Как проверить, что проблема исправлена
  5. Если не помогло — дальнейшая диагностика и откат

#Что происходит и когда применима инструкция

После смены версии PHP расширение mysqli может оказаться не установленным или не активированным именно для обработчика сайта. Типичный признак — Call to undefined function mysqli_connect() либо Class "mysqli" not found, хотя PHP CLI на сервере может показывать другой набор модулей.

#Причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Расширение не установлено для новой версииРасширение не установлено для новой версии. В веб-процессе extension_loaded("mysqli") = false после обновления.В веб-процессе extension_loaded("mysqli") = false после обновления.Установить совместимый пакет для нужной версии.
CLI и FPM загружают разные ini-файлыCLI и FPM загружают разные ini-файлы. php -m показывает mysqli, а веб-сайт — нет.php -m показывает mysqli, а веб-сайт — нет.Сверить Loaded Configuration File и дополнительные ini.
Ошибка не в mysqliОшибка не в mysqli. Расширение есть, но подключение к базе не работает из-за имени сервера или учётных данных.Расширение есть, но подключение к базе не работает из-за имени сервера или учётных данных.Искать отдельное сообщение mysqli_sql_exception.

#Подробная пошаговая инструкция

  1. Запишите буквальное сообщение и версию сайтаОткройте журнал сайта и сохраните несколько строк вокруг первой ошибки. Разделите «undefined function» и «Access denied for user»: первое свидетельствует об отсутствии расширения, второе — о подключении к БД. Не копируйте пароли БД в переписку.
  1. Проверьте версию PHP, которой обслуживается доменВ панели хостинга откройте настройки PHP для сайта; на самостоятельном сервере определите FastCGI-сокет виртуального хоста и соответствующий экземпляр FPM. Нельзя считать php -v в SSH версией сайта.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    SSH, только диагностика CLI; результат может отличаться от FPM и не доказывает наличие модуля на сайте.
    php -v; php -m | grep -iE "^(mysqli|pdo_mysql)$"
  1. Подтвердите отсутствие модуля через защищённую веб-проверкуВ закрытом от внешнего доступа диагностическом маршруте выполните extension_loaded("mysqli") и PHP_VERSION, проверьте php_ini_loaded_file(). Если модуль уже активен, перейдите к ошибке соединения или PHP-коду. Удалите маршрут после проверки.
  1. Установите модуль только для нужного пакета PHPНа Debian/Ubuntu с официальными пакетами mysqli обычно входит в пакет phpX.Y-mysql, где X.Y соответствует версии FPM. Сначала посмотрите наличие такого пакета в подключённых репозиториях; затем установите его обычным менеджером. На Fastpanel, сборках /opt/php и контейнерах способ установки другой — используйте панель или инструкцию поставщика, не смешивайте пакетные каталоги.
  2. SSH на Debian/Ubuntu, только чтение доступности и установленных пакетов
    Linux · Терминал (Bash)Команда
    SSH на Debian/Ubuntu, только чтение доступности и установленных пакетов. Замените номер версии; установка пока не выполняется.
    apt-cache policy php8.2-mysql; dpkg -l | grep -E "php8.2-(fpm|mysql)"
  1. Если пакет доступен, запланируйте установку с резервной копиейСогласуйте окно обслуживания. Пример для Debian/Ubuntu: sudo apt install php8.2-mysql, если версия сайта действительно 8.2 и пакет обслуживается вашим репозиторием. Установка изменяет систему; перед этим проверьте список планируемых пакетов, зависимости и способ отката. При использовании панели и сторонней сборки следуйте её схеме.
  1. Проверяйте конфигурацию FPM перед применениемПосле установки проверьте тест FPM и перечитайте только выбранную службу. Снова сравните extension_loaded("mysqli") в защищённой веб-проверке, затем удалите её и откройте страницу, которая раньше падала.
  2. SSH с административными правами, пример Debian PHP 8.2
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    SSH с административными правами, пример Debian PHP 8.2. Применяйте только если тест успешен и служба соответствует сайту.
    sudo php-fpm8.2 -t && sudo systemctl reload php8.2-fpm

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Разделите проблему расширения и базы данныхЕсли mysqli загрузился, но приложение пишет Access denied или Connection refused, проверьте адрес сервера БД, права пользователя, socket и доступность порта. Не изменяйте чужие учётные записи и не открывайте MySQL наружу ради проверки.

#Как проверить, что проблема исправлена

На сайте mysqli доступен и прежний вызов не выдаёт undefined function; обычный запрос к базе приложения работает с существующими безопасными правами.

#Если не помогло — дальнейшая диагностика и откат

Если в веб PHP mysqli не появился, найдите фактически используемую сборку и папку расширений. Не копируйте .so из другой версии PHP — они могут быть ABI-несовместимы.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.