Как исправить Ubuntu PHP Call to undefined function mb_internal_encoding()

Проблема:

Когда вы видите следующее сообщение об ошибке в логе PHP:

php_mb_internal_encoding_error.txt
2022/12/22 12:57:20 [error] 1908680#1908680: *9092980 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function mb_internal_encoding() in /var/www/snappymail/v/0.0.0/include.php:90
Stack trace:
#0 /var/www/index.php(11): include()
#1 {main}
  thrown in /var/www/snappymail/v/0.0.0/include.php on line 90" while reading response header from upstream, client: ::ffff:77.7.108.195, server: mydomain.com, request: "GET /?admin HTTP/2.0", upstream: "fastcgi://unix:/var/run/php/php8.2-fpm.sock:", host: "mydomain.com"

Решение

Отсутствующая функция mb_internal_encoding() из PHP-модуля mbstring.

Чтобы установить его, сначала вам нужно определить версию PHP, на которой выполняется данный скрипт. Это можно сделать либо посмотрев конфигурационные файлы веб-сервера для данного домена, либо посмотрев в логе ошибок. В этом случае мы можем определить, что версия PHP — 8.2, из upstream: "fastcgi://unix:/var/run/php/php8.2-fpm.sock:"

В случае, если вы не можете определить правильную версию, я рекомендую установить mbstring для каждой установленной версии PHP, которые вы можете увидеть, используя sudo dpkg --get-selections | grep php.

Учитывая номер версии, мы можем установить расширение mbstring из пакетных источников Ubuntu/Debian:

install_php_mbstring.sh
sudo apt -y install php8.2-mbstring

В зависимости от вашей конфигурации вам также может потребоваться перезапустить веб-сервер и/или службу PHP-FPM. Я рекомендую сначала попробовать без перезапуска, затем перезапустить веб-сервер и (если вы используете PHP-FPM) перезапустить PHP-FPM для вашей версии PHP. В случае, если это не поможет, вы всегда можете перезагрузиться.

После этого сообщение об ошибке должно исчезнуть — иногда вам нужно установить дополнительные PHP-модули, и лучше всего просто следить за логом ошибок на предмет других отсутствующих функций или других ошибок, связанных с отсутствующими расширениями.


Check out similar posts by category: PHP