Problém:
Když vidíte následující chybové hlášení ve vašem PHP logu:
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"Řešení
Chybějící funkce mb_internal_encoding() je z PHP modulu mbstring.
Pro instalaci musíte nejprve identifikovat PHP verzi, která běží daný skript. To lze provést buď prohlédnutím konfiguračních souborů webového serveru pro danou doménu, nebo prohlédnutím chybového logu. V tomto případě můžeme identifikovat, že PHP verze je 8.2 z upstream: "fastcgi://unix:/var/run/php/php8.2-fpm.sock:"
V případě, že nemůžete identifikovat správnou verzi, doporučuji nainstalovat mbstring pro každou nainstalovanou PHP verzi, kterou můžete vidět pomocí sudo dpkg --get-selections | grep php.
S číslem verze můžeme nainstalovat rozšíření mbstring z balíčkových zdrojů Ubuntu/Debian:
sudo apt -y install php8.2-mbstringV závislosti na vaší konfiguraci možná budete muset také restartovat webový server a/nebo službu PHP-FPM. Doporučuji to vyzkoušet bez restartu, pak restartovat webový server a (pokud používáte PHP-FPM) restartovat PHP-FPM pro vaši PHP verzi. V případě, že to nepomůže, můžete vždy restartovat.
Po tom by chybové hlášení mělo zmizet - někdy potřebujete nainstalovat další PHP moduly a je nejlepší jen sledovat chybový log pro další chybějící funkce nebo jiné chyby týkající se chybějícího rozšíření.