Проблема:
Когда вы видите следующее сообщение об ошибке в логе PHP:
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:
sudo apt -y install php8.2-mbstringВ зависимости от вашей конфигурации вам также может потребоваться перезапустить веб-сервер и/или службу PHP-FPM. Я рекомендую сначала попробовать без перезапуска, затем перезапустить веб-сервер и (если вы используете PHP-FPM) перезапустить PHP-FPM для вашей версии PHP. В случае, если это не поможет, вы всегда можете перезагрузиться.
После этого сообщение об ошибке должно исчезнуть — иногда вам нужно установить дополнительные PHP-модули, и лучше всего просто следить за логом ошибок на предмет других отсутствующих функций или других ошибок, связанных с отсутствующими расширениями.