Fatal error: Call to undefined function mb_strlen()
Solution 1
The function mb_strlen()
is not enabled by default in PHP. Please read the manual for installation details:
http://www.php.net/manual/en/mbstring.installation.php
Solution 2
To fix this install the php7.0-mbstring package:
sudo apt install php7.0-mbstring
Solution 3
For me the following command did the trick
sudo apt install php-mbstring
Solution 4
On Centos, RedHat, Fedora and other yum-my systems it is much simpler than the PHP manual suggests:
yum install php-mbstring
service httpd restart
Solution 5
For me, this worked in Ubuntu 14.04 and for php5.6:
$ sudo apt-get install php5.6-mbstring
Related videos on Youtube
Ali
Working at CDOT on Mozilla @Webmaker. Passionate about the web. A Strong believer in an open source projects and a Mozillian https://mozillians.org/en-US/u/aali/
Updated on July 05, 2022Comments
-
Ali almost 2 years
I'm trying to make a donation center which I use the source code from Totorialzine.
Everything works fine for me at this moment so far but the only problem I was struggling on and trying to look at for the whole day and can't figure what is actually wrong with the code exactly
here is what I get when I submit the comment on the page when my visitors donate.
Fatal error: Call to undefined function mb_strlen() in /home/yoursn0w/public_html/livetv/premium/thankyou.php on line 14
and here is the code in the php file.
<?php require "config.php"; require "connect.php"; if(isset($_POST['submitform']) && isset($_POST['txn_id'])) { $_POST['nameField'] = esc($_POST['nameField']); $_POST['websiteField'] = esc($_POST['websiteField']); $_POST['messageField'] = esc($_POST['messageField']); $error = array(); if(mb_strlen($_POST['nameField'],"utf-8")<2) { $error[] = 'Please fill in a valid name.'; } if(mb_strlen($_POST['messageField'],"utf-8")<2) { $error[] = 'Please fill in a longer message.'; } if(!validateURL($_POST['websiteField'])) { $error[] = 'The URL you entered is invalid.'; } $errorString = ''; if(count($error)) { $errorString = join('<br />',$error); } else { mysql_query(" INSERT INTO dc_comments (transaction_id, name, url, message) VALUES ( '".esc($_POST['txn_id'])."', '".$_POST['nameField']."', '".$_POST['websiteField']."', '".$_POST['messageField']."' )"); if(mysql_affected_rows($link)==1) { $messageString = '<a href="donate.php">You were added to our donor list! »</a>'; } } } ?>
I have my database in the phpMyAdmin uploaded completed
here is where I follow the instruction of the installation
http://tutorialzine.com/2010/05/donation-center-php-mysql-paypal-api/
-
hakre almost 13 yearsphp.net/manual/en/mbstring.installation.php - You need to either enable or install the mbstring PHP extension to use that function.
-
-
Ali almost 13 yearsthank you I'm going to look at the link that you provide me now.
-
Ali almost 13 yearsmbstring.detect_order mbstring.encoding_translation mbstring.func_overload mbstring.http_input mbstring.http_output mbstring.internal_encoding mbstring.language mbstring.substitute_character here is what I found which one would define the same of what I have to enable if you can please point me to the right one?
-
AJ. almost 13 years@Ali - I'm not sure what this is supposed to be. If it's formatted info, you would be better served editing your original question and adding the pertanent info there.
-
Ali almost 13 yearsbecause what I have looked at my php.ini all those mbstring that I can look at all of them and there is only one option that I can enable or disable it and when I enable it there is nothing change and I still get the same error
-
AJ. almost 13 years@Ali - can you see these settings in the output from
phpinfo()
? -
Ali almost 13 years@AJ well I only see these option in
php.ini
in the WHM (WebHost Manager) which I can see all of the options in there -
AJ. almost 13 years@Ali - Many systems have multiple instances of the php.ini file, and it can be confusing which one to trust. The best course of action is to implement a test page under your site that simply calls
phpinfo()
. Search the output of that page for "mbstring" module. If you don't see it there, it's not installed. -
AJ. almost 13 years@Ali - you will not lose any data by creating a PHP page that just calls
phpinfo()
. Please try this per my previous comment, and see if in fact mbstring is installed for your environment. -
AJ. almost 13 years@Ali - two things: 1. I don't see any evidence of mbstring being installed on your environment. If you have access to do so, you'll need to install it. Refer to the documentation link I provided above. 2. REMOVE THE URL FOR THE TEST PAGE! Your public hostname is visible in the output from
phpinfo()
. You are exposing yourself to risk by publishing your public hostname. My intentions are to help you, but others may have more malicious intentions. -
Ali almost 13 years@AJ sorry for not be careful of what I did, I was checking before I post and though all of the information wouldn't really cause anything for me in the risk and didn't know that could cause a problem Thank you!! secondly I'm going to look at the documentation that you provide me and see if I can get the mbstring install on my php. I hope I can do it :)
-
AJ. almost 13 years@Ali - no problem. Please understand that unless you have root privileges on your server, you will probably not be able to install the mbstring module without cooperation from your hosting provider.
-
Ali almost 13 years@AJ I have spoke to my provider and they say I have a full right to do whatever on my server but they wouldn't be able to assist me on the installation part so I have to do some research on how to install it via SSH or where to get it install
-
Ali almost 13 years@AJ I have finally have mbstring installed and now my script working!! here is what I did it was so simple than I thought!!! WHM -> Software -> EasyApache and in Step 5 click on Exhaustive Options List and check the box for Mbstring and proceed with the build process. It's much simpler than trying to do this manually.
-
Justin Michael almost 8 yearsThis works on any system that uses apt and has updated packages, like Ubuntu 16.06 LTS. I needed to restart Apache after running this with
sudo systemctl restart apache2
before I could use the mbstring functions. -
malhal over 7 yearsNeeded this for RedBeanPHP on 16.04 LTS using nginx
-
Funk Forty Niner over 6 yearsfor you maybe but maybe the OP doesn't have access to shell commands.
-
Matiss almost 5 yearsFor me: sudo apt install php5.6-mbstring && sudo service nginx reload
-
Arthur Sult about 2 yearsthanks! It was not enough to me to install php-mbstring only, also needed to restart apache.