2011-11-25 31 views
21

Tengo un servidor (Ubuntu 11.10 x64) que ejecuta PHP 5.3.8 con Apache2/MySQL. Actualmente estoy trabajando en un proyecto en el que estoy obligado a hacer una cierta codificación de caracteres específicos, pero descubrí que ninguno de los multibyte (mb_ * funciones) están funcionando.mb_convert_encoding, función indefinida mientras mbstring está habilitado

Sin embargo, cuando miro en phpinfo(), veo que la compatibilidad multibyte está habilitada.

He intentado cosas como apt-get install php5-mbstring, php-mbstring, php-multibyte, etc., pero ninguno parece funcionar.

¿Alguien puede indicarme la dirección correcta para esto? ¡Gracias por adelantado!

edición: Fijo por recompilar PHP (este era mi último recurso, que inicialmente quería evitar)

./configure --enable-mbstring

El extraño esto es, phpinfo (ya) demostró que estaba habilitado. No sé por qué no funcionó antes:/

+1

cuál es el mensaje de error al intentar cualquiera de los mb_nogueira @ yahoo.com * funciones? –

+1

Configuración del servidor web frente a la configuración CLI? ¿Dónde ves exactamente qué? – deceze

+0

@ EmirAkaydın - llamada a la función indefinida mb_substr o mb_convert_encoding. – Harold

Respuesta

34

Muchos de los servidores Linux más nuevos no tienen módulos PHP Multibyte instalados por defecto. Una solución simple es a menudo instalar php-mbstring.

En los sabores de Red Hat (CentOS, Fedora, etc.) puede usar yum install php-mbstring.

Luego, asegúrese de reiniciar su servidor Apache. Use el servicio httpd restart en los sabores de RH.

+9

'sudo apt-get install php7.0-mbstring' y luego' sudo service php7.0-fpm restart' me funcionó. ¡Gracias! – neilsimp1

+0

También he editado /etc/php/7.0/mods_available/mbstring.ini y elimino el; para la línea de extensión. De repente, comenzó a funcionar para mí :) –

1

¿Tiene instalado libmbfl? Si es así, debe mostrarse en phpinfo() como "Motor de cadenas de múltiples bytes" bajo mbstring.

+0

Sí, lo tengo instalado. Sin embargo, acabo de notar que el "Soporte de Zend Multibyte" está desactivado. ¿Hay alguna forma de habilitar esto sin tener que recompilar PHP? – Harold

+0

No creo que tenga algo que ver con la extensión mbstring. – Narf

0

A veces las personas que reciben este tipo de error: Error fatal: llamada a la función indefinida mb_convert_encoding() en /public_html/this/this.php en la línea 188. Normalmente, este tipo de errores viene en los sitios PHP y en el framework PHP.

Parece que PHP mbstring no está instalado en su servidor.

Solución:

En mi caso tengo simplemente elimine el comentario de la ampliación = php_mbstring.dll en el archivo php.ini y ha resuelto el problema.

no se olvide de reiniciar el servidor Apache después elimine el comentario de la ampliación = php_mbstring.dll

Código tomado de este blog: http://chandreshrana.blogspot.in/2016/01/call-to-undefined-function.html

Cuestiones relacionadas