33

I have a server (Ubuntu 11.10 x64) running PHP 5.3.8 with Apache2 / MySQL. I'm currently working on a project where I'm required to do some specific character encoding, but I found out that none of the multibyte (mb_* functions) are working.

However, when I look in phpinfo(), I see that multibyte support is enabled.

I've tried things like apt-get install php5-mbstring, php-mbstring, php-multibyte, etc. etc. but none seem to work.

Can anyone point me in the right direction for this? Thanks in advance!

edit: Fixed it by recompiling PHP (this was my last resort, which I initially wanted to avoid)

./configure --enable-mbstring

The weird this is, phpinfo() already showed that it was enabled. I don't know why it didn't work before :/

Community
  • 1
  • 1
Harold
  • 1,372
  • 1
  • 14
  • 25

4 Answers4

50

A lot of newer Linux servers do not have PHP Multibyte modules installed by default. A simple solution is often to install php-mbstring.

On Red Hat flavors (CentOS, Fedora, etc.) you can use yum install php-mbstring.

Make sure you restart your Apache server afterwards. Use service httpd restart on RH flavors.

Lance Cleveland
  • 3,098
  • 1
  • 33
  • 36
7

In the case of your installation is php5.6 is similar to solution of neilsimp1:

Running sudo apt-get install php7.0-mbstring and then sudo service php7.0-fpm restart did the trick for me.

sudo apt-get install php5.6-mbstring

and then restart apache service

sudo service apache2 restart.
Daniel
  • 10,641
  • 12
  • 47
  • 85
rpaillao
  • 193
  • 1
  • 2
  • 11
2

Sometimes people receiving this kind of error : Fatal error: Call to undefined function mb_convert_encoding() in /public_html/this/this.php at line 188. Normally this kind of errors comes in PHP Sites and PHP framework aswell.

It looks like PHP mbstring not installed on your server.

Solution :

In my case I have just uncomment ;extension=php_mbstring.dll in php.ini file and issue has been resolved.

Don't forget to restart apache server after uncomment ;extension=php_mbstring.dll

Code taken from this blog: http://chandreshrana.blogspot.in/2016/01/call-to-undefined-function.html

Chandresh
  • 361
  • 2
  • 7
0

Check if MBString is Installed

You can know if it is actually installed or not with the -m (Show compiled in modules) arg...

php -m | grep mbstring

If installed, you will see mbstring as the output from the above, or blank if it is not installed.

Install MBString

If you have the newest PHP (PHP8 right now), you can install with...

apt-get install php-mbstring 
yum install php-mbstring

If you have PHP7, and you need an older MBString, then install with...

apt-get install php7.0-mbstring
yum install php7.0-mbstring

Restart the Server

Restart the server after install with this at your command line:

/etc/init.d/apache2 restart

Refer back to step 1 to check that MBString actually installed.

HoldOffHunger
  • 18,769
  • 10
  • 104
  • 133
  • This is very system specific, and not very widely applicable; where does php70w-mbstring come from? Most people do not run PHP as an Apache module any longer, and if they do there's a good chance the old sysv init scripts aren't available; most systems use systemd now. – miken32 Dec 29 '21 at 19:21
  • Oops, that was actually a copy/paste error, thanks for catching, I meant to have [`php7.0-mbstring`](https://stackoverflow.com/a/35892829/2430549) there. – HoldOffHunger Dec 29 '21 at 19:32