Ошибки

PHP: Call to undefined function — что делать

PHP не нашёл функцию с таким именем. Если функция из модуля PHP — curl, mbstring, gd, pgsql, — модуль не установлен: его ставят одним пакетом. Если функцию удалили из PHP, нужна новая версия программы.

≈ 5 мин чтения
Содержание 8

Как выглядит ошибка

PHP Fatal error:  Uncaught Error: Call to undefined function curl_init() in /var/www/example.com/api.php:12
  • Uncaught Error — PHP остановил скрипт: дальше этой строки он не пошёл.
  • curl_init() — функция, которой PHP не знает.
  • /var/www/example.com/api.php:12 — файл и номер строки, где её вызвали.

В журнале после этой строки идут строки Stack trace: — цепочка вызовов, которая привела к ошибке. Для поиска причины хватает первой строки. Посетитель в это время видит ошибку 500 или белую страницу. На сайте под nginx запись лежит в журнале nginx: sudo tail -n 30 /var/log/nginx/error.log.

Найдите функцию в таблице

По началу имени функции видно, из какого она модуля. Модули ставятся пакетами Ubuntu:

Функция в сообщенииМодульЧто поставить
curl_init, curl_exec и другие curl_…cURLsudo apt install php8.3-curl
mb_strlen, mb_substr и другие mb_…mbstringsudo apt install php8.3-mbstring
imagecreatefromjpeg, imagecreatetruecolor и другие image…GDsudo apt install php8.3-gd
simplexml_load_string, simplexml_load_fileSimpleXMLsudo apt install php8.3-xml
pg_connect, pg_query и другие pg_…PostgreSQLsudo apt install php8.3-pgsql
bcadd, bcmul и другие bc…BC Mathsudo apt install php8.3-bcmath
mysqli_connect и другие mysqli_…MySQLiотдельный разбор

Как поставить модуль

Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Обновите список пакетов: sudo apt update. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.
  2. Поставьте пакет из таблицы, например sudo apt install php8.3-curl. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter.
  3. Проверьте, что модуль появился: php -m выведет список модулей PHP, имя нужного должно быть в нём. Для curl_init это curl, для mb_strlen — mbstring.
  4. Перезапустите PHP-FPM, чтобы сайт увидел модуль: sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен.
  5. Откройте страницу ещё раз.

Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/. Если apt пишет Unable to locate package — разбор этой ошибки.

Если функцию удалили из PHP

Некоторые функции из старых версий PHP удалены. Их не вернуть никаким пакетом: программе нужна новая версия, где они заменены.

ФункцияЧто с нейЧем заменяют
mysql_connect, mysql_query и другие mysql_…удалены в PHP 7.0mysqli или PDO
ereg, eregi и другие ereg…удалены в PHP 7.0preg_match и другие функции preg_…
eachудалена в PHP 8.0цикл foreach
create_functionудалена в PHP 8.0анонимная функция function () { … }

Если ошибку выдаёт плагин, тема или модуль готовой программы — обновите его или найдите замену. Если это ваш код — передайте сообщение разработчику.

Если имя функции не из таблиц

  • Опечатка в имени — проверьте строку из сообщения.
  • Функция объявлена в другом файле, который не подключён. Проверьте строки require и include в начале скрипта; если файл не найден, PHP пишет Failed to open stream.
  • В имени функции есть название плагина — тема или другой плагин рассчитывает на него, а он выключен или удалён.

Ошибки рядом

Что видитеЧто делать
Call to undefined function mysqli_connect()поставьте модуль MySQL
Class "…" not foundнет класса: Composer или модуль
другая ошибка PHPнайдите её в списке

Источники

Сверено 14 октября 2026 года.

Что почитать дальше