Cómo solucionar Ubuntu PHP Call to undefined function mb_internal_encoding()

Problema:

Al ver el siguiente mensaje de error en tu log de 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"

Solución

La función faltante mb_internal_encoding() es del módulo PHP mbstring.

Para instalarlo, primero necesitas identificar la versión de PHP que ejecuta el script dado. Esto se puede hacer ya sea revisando los archivos de configuración del servidor web para el dominio dado, o revisando el log de errores. En este caso, podemos identificar que la versión de PHP es 8.2 de upstream: "fastcgi://unix:/var/run/php/php8.2-fpm.sock:"

En caso de que no puedas identificar la versión correcta, recomiendo instalar mbstring para cada versión de PHP instalada, lo cual puedes ver usando sudo dpkg --get-selections | grep php.

Dado el número de versión, podemos instalar la extensión mbstring desde las fuentes de paquetes de Ubuntu/Debian:

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

Dependiendo de tu configuración, podrías necesitar también reiniciar el servidor web y/o el servicio PHP-FPM. Recomiendo probarlo sin reiniciar, luego reiniciar el servidor web y (si estás usando PHP-FPM) reiniciar PHP-FPM para tu versión de PHP. En caso de que eso no ayude, siempre puedes reiniciar.

Después de eso, el mensaje de error debería haber desaparecido - a veces necesitas instalar módulos adicionales de PHP y es mejor simplemente revisar el log de errores para ver si hay más funciones faltantes u otros errores relacionados con extensiones faltantes.


Echa un vistazo a artículos similares por categoría: PHP