#Что означает ошибка
undefined function mb_strlen
Fatal error: Call to undefined function mb_strlen() сообщает, что в вашей сборке PHP не включено расширение mbstring. Функции mb_* нужны для корректной работы со строками в многобайтовых кодировках, прежде всего UTF-8: обычный strlen считает байты, а не символы, поэтому русский текст «ломается».
Эти функции требуются большинству современных CMS и фреймворков (WordPress, Laravel, Symfony), и ошибка возникает чаще всего после переезда на новый сервер или обновления версии PHP, когда набор расширений не был установлен заново.
Установите и включите расширение mbstring.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет mbstringРасширение. | Проявляется как «undefined function mb_strlen» или близкий по смыслу сбой. | Установите. |
| php.iniВыключено. | Проявляется как «undefined function mb_strlen» или близкий по смыслу сбой. | Включите. |
| Другая версия PHPCLI/FPM. | Проявляется как «undefined function mb_strlen» или близкий по смыслу сбой. | Проверьте. |
| КэшСтарый. | Проявляется как «undefined function mb_strlen» или близкий по смыслу сбой. | Перезапустите. |
#Пошаговое решение
- Проверьте, установлено ли расширениеНайдите в логе
Call to undefined function mb_strlen()и выясните, какой PHP исполняет проблемный файл — веб-сайт через PHP-FPM или CLI-скрипт. В панели хостинга посмотрите список расширений выбранной версии; CLI-командаphp -m | grep mbstringсама по себе не доказывает наличие модуля у сайта. - Установите php-mbstringЕсли
mbstringотсутствует, администратор Debian/Ubuntu устанавливает пакет для используемой версии PHP из настроенного репозитория, напримерphp8.2-mbstringдля PHP 8.2; точное имя зависит от системы. Сначала проверьте репозитории и совместимость, не смешивайте пакеты разных сборок. - Проверьте версию PHP веб-сервераВ Windows со сборкой PHP откройте фактический
php.iniвеб-сервера и проверьте включение расширенияmbstring, наличие DLL и совпадение архитектуры/версии. Для XAMPP/OpenServer действуют собственные панели настройки; не копируйте чужойphp.iniповерх своего. - Перезапустите службуПосле установки модуля перезагрузите нужную службу PHP-FPM или веб-сервер по способу развёртывания, затем проверьте
extension_loaded("mbstring")именно в веб-контексте через временный закрытый тест. Удалите тестовую страницу после проверки и повторите операциюmb_strlen().
#Как установить расширение
На Ubuntu и Debian установите пакет php-mbstring (или с номером версии, например php8.2-mbstring) и перезапустите PHP-FPM или Apache. На CentOS/AlmaLinux — пакет php-mbstring из репозитория. В Windows раскомментируйте строку extension=mbstring в php.ini и убедитесь, что есть файл php_mbstring.dll.
#Проверка результата
Выполните php -m | grep mbstring в консоли и откройте phpinfo() на сайте. Важно проверять именно ту версию PHP, которая обрабатывает сайт: в консоли и в веб-сервере могут быть разные версии и разные php.ini. Если расширение установлено для CLI, но не для FPM, ошибка останется.
#Типичные ловушки
На хостингах с панелью включайте расширение в настройках PHP конкретного сайта. После смены версии PHP в панели набор модулей может сброситься. Не заменяйте mb_strlen на strlen «чтобы заработало»: поведение кода изменится, а ошибки с кириллицей появятся позже.
php -vphp -m | grep -i mbstring# Веб-PHP может отличаться от CLI; устанавливайте mbstring для его конкретной версии.# Перезагрузите только реально изменённую службу PHP, проверив установленную конфигурацию.