PHP PHP 8LinuxWindows

PHP 8: PHP 8 не загружает расширение после смены версии

  • Обновлено
  • Чтение ≈ 3 минуты

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

Расширение PHP может исчезнуть после переключения веб-сайта на PHP 8, даже если оно доступно старой версии или командному PHP. Сначала установите, какой обработчик обслуживает сайт, затем проверьте наличие конкретного модуля и его настройки.

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

#Когда возникает проблема и как её отличить

Расширение PHP может исчезнуть после переключения веб-сайта на PHP 8, даже если оно доступно старой версии или командному PHP. Сначала установите, какой обработчик обслуживает сайт, затем проверьте наличие конкретного модуля и его настройки.

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

Возможная причинаКак узнатьЧто делать
Модуль установлен для другой версии PHPCLI и PHP-FPM используют разные версии и каталоги расширений.php -m показывает модуль, но веб-приложение пишет об отсутствии функцииПроверить конфигурацию именно обработчика сайта.
Расширение не подключено к PHP-FPMДля активного обработчика отключено или не установлено необходимое расширение.В сообщениях есть Call to undefined function или Class ZipArchive not foundВключить подходящий модуль средствами панели либо дистрибутива.
Расширение не подходит к данной сборкеДвоичный файл может быть собран для другого PHP API или отсутствовать по пути.В журнале запуска Unable to load dynamic libraryИспользовать совместимый пакет расширения, не копировать старые .so/.dll.

#Пошаговая диагностика и исправление

  1. Определите нужное расширение по ошибкеВ журнале PHP найдите точное имя функции или класса: mb_strlen относится к mbstring, ZipArchive — к zip, PDO — к PDO, но драйвер базы может требоваться отдельно. Не ставьте все возможные модули подряд; выпишите имя и проверьте требования вашего приложения.
  2. Проверьте веб-PHP в панели хостингаОткройте панель управления сайтом → настройки PHP (названия пунктов отличаются у хостеров). Запишите выбранную версию PHP и способ запуска: PHP-FPM, CGI или модуль веб-сервера. Если панель показывает список расширений, найдите нужное. Для теста используйте временную диагностическую страницу только в закрытом каталоге и удалите её сразу после проверки.
  3. Сравните командную строку с веб-обработчикомПо SSH в терминале выполните php -v и php -m: сначала версия CLI, затем список его расширений. Если консоль показывает модуль, это ещё не значит, что он включён в PHP-FPM. Для веб-проверки в закрытом тестовом скрипте временно выполните extension_loaded("mbstring") (замените имя модуля) и PHP_VERSION, не публикуя весь результат phpinfo().
  4. Включите модуль для правильной версииНа управляемом хостинге выберите расширение в настройках активного PHP и сохраните изменения. На собственном Debian/Ubuntu сначала определите имена пакетов, доступных для установленной версии: они могут называться php8.x-имя и зависеть от репозитория. Установку согласуйте с администратором; не переносите старый бинарный файл модуля в новую директорию и не правьте системный php.ini наугад.
  5. Проверьте ошибки запуска PHP и конфигурациюЕсли расширение отмечено включённым, но функция недоступна, посмотрите журнал PHP-FPM на ошибки загрузки. Сравните extension_dir, путь к файлу и используемую версию PHP. Перезапуск конкретного обработчика выполняйте только после проверки конфигурации и с учётом других сайтов, которые обслуживает тот же процесс.
  6. Повторите точную операцию приложенияНа тестовом сайте повторите ранее неработавший запрос. Проверьте не только extension_loaded, но и функциональный вызов приложения: например, открытие ZIP или подключение к БД. Если расширение есть, а операция падает, проверьте требуемый драйвер, конфигурацию и права. Удалите диагностический файл, затем переносите изменение на рабочую площадку.
  7. Команды в SSH/терминале от пользователя проекта, без администратора
    Linux · Терминал (Bash)Команда
    Команды в SSH/терминале от пользователя проекта, без администратора. Проверяют только CLI-версию и модули, не PHP-FPM.
    php -v
    php -m

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

Веб-обработчик должен показывать требуемый модуль, а ранее неработавшая функция выполнять реальную задачу. php -m в консоли сам по себе не является подтверждением.

#Если ошибка осталась

Повторите исходный сценарий в тестовой среде, откройте свежую запись журнала с точным временем, именем функции, файлом и строкой. Сравните новое сообщение с исходным: ошибка могла переместиться на следующий участок кода. Не подавляйте все ошибки общим обработчиком. Если изменения затрагивали работающий проект, восстановите сохранённую копию и разберите новое сообщение до повторного переноса.

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

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