42

Whenever I try to access phpMyAdmin, I receive the following error:

"The mbstring extension is missing. Please check your PHP configuration."

I am running a LEMP stack on a CentOS 7 server. I have elected to use PHP 7 for this installation. I have not experienced this error on identical set-ups running earlier versions of PHP.

extension_loaded('mbstring') returns false even though mbstring.ini (/etc/php.d/) contains:

; Enable mbstring extension module
extension=mbstring.so

I am 100% sure that the mbstring module is installed on my server.

I'm completely stumped so if anyone has any ideas whatsoever, please let me know. Thanks.

Andrea
  • 19,134
  • 4
  • 43
  • 65
NoahMCM
  • 601
  • 1
  • 5
  • 8
  • Have you looked at `phpinfo();` ? – Andrea Dec 26 '15 at 17:01
  • 1
    @Andrea Yep, it follows the theme with no mention of _mbstring_ at all. – NoahMCM Dec 26 '15 at 18:13
  • in that case, mbstring isn't installed and working. `extension=` shouldn't go in `mbstring.ini` btw, I think it should go in `php.ini` – Andrea Dec 26 '15 at 19:27
  • 1
    Not with PHP 7, no. From php.ini: `Note: packaged extension modules are now loaded via the .ini files found in the directory /etc/php.d; these are loaded by default.` @Andrea – NoahMCM Dec 26 '15 at 19:39
  • I had this problem on DigitalOcean with PHP8. Solved with the top-answer. I think this is a version-independent solution. – HoldOffHunger Dec 30 '21 at 01:55

5 Answers5

86

For those who have debian :

 sudo apt-get install php7.0-mbstring

Otherwise in centos (tested in centos 6.6)

sudo yum install php70w-mbstring

and as @mpen said you can activate it

sudo phpenmod mbstring
Chopchop
  • 2,899
  • 18
  • 36
5

A solution was reached with the following method:

I put extension=mbstring.so inside php.ini even though that is no longer the method PHP uses by default to load modules.

From php.ini itself:

Note: packaged extension modules are now loaded via the .ini files found in the directory /etc/php.d; these are loaded by default.

It seemed to fix my problem. I would still be interested to hear if anyone else has a different take on this matter.

NoahMCM
  • 601
  • 1
  • 5
  • 8
  • Perhaps the distribution of PHP 7 you used does not use the same configuration locations? – Andrea Dec 26 '15 at 22:43
  • I had already installed `php7.0-mbstring` but for some reason `phpenmod mbstring` did not enable it. I had to manually enable it using this method. Additionally, my environment required a `sudo service apache2 restart` for the change to take effect. – Zane Jun 20 '16 at 01:40
2

For PHP7 on centos

try this yum install php70-mbstring

Sankar Subburaj
  • 4,992
  • 12
  • 48
  • 79
0

I had this problem for a long time. I found the correct way (for me) to correct it... and it's fairly simple :)

Juste add "universe" on the xenial-updates

# cat /etc/apt/sources.list.d/*
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial-backports main
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial main universe
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial-proposed main
deb [arch=amd64] http://security.ubuntu.com/ubuntu xenial-security main
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial-updates main **universe**
stadja
  • 56
  • 6
-1

run sudo apt-get update, sudo apt-get upgrade before installing with sudo apt-get install php-mbstring.

I had the same problem today and found this way.

Gimo
  • 78
  • 1
  • 9