PHP: Call to undefined function — что делать
PHP не нашёл функцию с таким именем. Если функция из модуля PHP — curl, mbstring, gd, pgsql, — модуль не установлен: его ставят одним пакетом. Если функцию удалили из PHP, нужна новая версия программы.
Содержание 8
Как выглядит ошибка
PHP Fatal error: Uncaught Error: Call to undefined function curl_init() in /var/www/example.com/api.php:12Uncaught 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_… | cURL | sudo apt install php8.3-curl |
mb_strlen, mb_substr и другие mb_… | mbstring | sudo apt install php8.3-mbstring |
imagecreatefromjpeg, imagecreatetruecolor и другие image… | GD | sudo apt install php8.3-gd |
simplexml_load_string, simplexml_load_file | SimpleXML | sudo apt install php8.3-xml |
pg_connect, pg_query и другие pg_… | PostgreSQL | sudo apt install php8.3-pgsql |
bcadd, bcmul и другие bc… | BC Math | sudo apt install php8.3-bcmath |
mysqli_connect и другие mysqli_… | MySQLi | отдельный разбор |
Как поставить модуль
Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
- Обновите список пакетов:
sudo apt update. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter. - Поставьте пакет из таблицы, например
sudo apt install php8.3-curl. На вопросDo you want to continue? [Y/n]нажмите Y и Enter. - Проверьте, что модуль появился:
php -mвыведет список модулей PHP, имя нужного должно быть в нём. Для curl_init этоcurl, для mb_strlen —mbstring. - Перезапустите PHP-FPM, чтобы сайт увидел модуль:
sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен. - Откройте страницу ещё раз.
Команды — для 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.0 | mysqli или PDO |
ereg, eregi и другие ereg… | удалены в PHP 7.0 | preg_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 | найдите её в списке |
Источники
- Исходный код PHP 8.3.6: zend_execute.c — тексты Undefined variable, Undefined array key и Call to undefined function.
- Справка PHP: each() — устарела в PHP 7.2.0 и удалена в PHP 8.0.0; так же удалена create_function().
- Справка PHP: изменения в PHP 7.0 — удалены функции ext/mysql и ereg.
- Справка PHP: mysql_connect() — модуль mysql устарел в PHP 5.5.0 и удалён в PHP 7.0.0.
- Справка PHP: curl_init() — функция модуля cURL.
- Справка PHP: функции mbstring — все функции модуля начинаются с mb_.
- Справка PHP: imagecreatefromjpeg() — функция модуля GD.
- Справка PHP: pg_connect() — функция модуля PostgreSQL.
- Справка PHP: bcadd() — функция модуля BC Math.
- Пакет php8.3-curl в Ubuntu 24.04 — модуль CURL для PHP 8.3; так же устроены php8.3-mbstring, php8.3-gd, php8.3-xml, php8.3-pgsql и php8.3-bcmath.
Сверено 14 октября 2026 года.
Что почитать дальше
- Ошибки PHPкак читать сообщение и где журнал.
- Как установить PHP на UbuntuPHP-FPM и модули.
- Как установить Composer на Ubuntuесли программа ставится через Composer и просит модули ext-….