PHP PHP 8LinuxWindows

PHP 8: Ошибка Call to undefined function после обновления PHP

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

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

Ошибка Call to undefined function после смены версии PHP означает, что интерпретатор не знает указанную функцию: она могла быть удалена из языка, принадлежать отсутствующему расширению или не подключаться вместе с файлом.

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

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

Ошибка Call to undefined function после смены версии PHP означает, что интерпретатор не знает указанную функцию: она могла быть удалена из языка, принадлежать отсутствующему расширению или не подключаться вместе с файлом.

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

Возможная причинаКак узнатьЧто делать
Удалённая функция старого PHPСтарые функции были исключены из поддерживаемого PHP; включением расширения их не вернуть.В ошибке указаны mysql_query, create_function или eachПереписать код на поддерживаемый аналог, проверить данные и запросы.
Не загружено расширениеАктивный веб-PHP не имеет нужного модуля.Не найдены mb_strlen, imagecreatefromjpeg, mysqli_connectПроверить extension_loaded в PHP-FPM и включить модуль.
Не подключён пользовательский файлФайл с объявлением не был подключён из-за пути или автозагрузки.Ошибка ссылается на пользовательскую функцию, известную в проектеПроверить require_once, include_path и точку входа.

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

  1. Выпишите имя функции без догадокВ журнале PHP найдите полное сообщение Uncaught Error: Call to undefined function function_name() с файлом и строкой. Откройте указанный исходник. Убедитесь, что это функция, а не статический метод класса. Запишите фактическую версию веб-PHP в панели сайта.
  2. Определите источник функцииПоищите точное имя функции в официальном руководстве PHP и в исходниках своего проекта. Если это пользовательская функция, в редакторе ищите function function_name( и посмотрите, в каком файле она определена. Если она принадлежит расширению, установите имя модуля. Если документация говорит Removed/удалена, ищите замену, а не настройку PHP.
  3. Для create_function замените старый вызов замыканиемЕсли ошибка именно create_function, откройте пример: старый вызов создавал функцию из текстовых строк и был удалён в PHP 8. Перепишите конкретный случай как анонимную функцию с function (...) use (...) { ... } или стрелочную fn(...) => .... Не подставляйте произвольный код в eval: это небезопасная замена.
  4. Для старого mysql_* мигрируйте работу с базойЕсли отсутствует mysql_query или mysql_connect, это старый API, удалённый ещё в PHP 7. Планируйте переход на PDO или mysqli с подготовленными запросами и тестом на копии базы. Простое переименование mysql_query в mysqli_query без проверки соединения, кодировки и параметров не гарантирует корректность.
  5. Если нужна функция расширения, проверьте веб-PHPВ SSH выполните php -m только для ориентира; затем через закрытую диагностику или настройки PHP-FPM подтвердите наличие модуля для самого сайта. Например, function_exists("mb_strlen") должен вернуть true при работающем mbstring. Если false, подключите модуль именно для выбранной версии PHP через панель/администратора.
  6. Если функция написана вами, исправьте подключение файлаВходная точка должна подключать файл по устойчивому пути, например require_once __DIR__ . "/lib/helpers.php";, если это соответствует структуре проекта. Проверьте существование файла, его регистр на Linux и отсутствие раннего выхода до подключения. Включение файла по относительному пути от текущей рабочей директории может ломаться при запуске из cron.
  7. Пройдите исходный пользовательский сценарийНа тестовой копии выполните операцию, которая раньше падала, и проверьте ожидаемый результат: запрос к базе, обработку текста или генерацию изображения. Просмотрите новый журнал, потому что после устранения undefined function могут проявиться ошибки аргументов. Если тест не проходит, верните файл из резервной копии и разберите следующее сообщение.
  8. Командная строка, обычный пользователь
    Linux · Терминал (Bash)Команда
    Командная строка, обычный пользователь. Список модулей относится к CLI; для веб-сайта проверьте PHP-FPM отдельно.
    php -v
    php -m

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

Ошибка Call to undefined function для нужного вызова должна исчезнуть. Функциональный результат нужно проверить отдельно: наличие функции ещё не означает, что приложение работает правильно.

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

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

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

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