Fatal error: Call to undefined function mb_strlen()

125,662

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
Share:
125,662

Related videos on Youtube

Ali
Author by

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, 2022

Comments

  • Ali
    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! &raquo;</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/

  • Ali
    Ali almost 13 years
    thank you I'm going to look at the link that you provide me now.
  • Ali
    Ali almost 13 years
    mbstring.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.
    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
    Ali almost 13 years
    because 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.
    AJ. almost 13 years
    @Ali - can you see these settings in the output from phpinfo()?
  • Ali
    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.
    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.
    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.
    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
    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.
    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
    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
    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
    Justin Michael almost 8 years
    This 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
    malhal over 7 years
    Needed this for RedBeanPHP on 16.04 LTS using nginx
  • Funk Forty Niner
    Funk Forty Niner over 6 years
    for you maybe but maybe the OP doesn't have access to shell commands.
  • Matiss
    Matiss almost 5 years
    For me: sudo apt install php5.6-mbstring && sudo service nginx reload
  • Arthur Sult
    Arthur Sult about 2 years
    thanks! It was not enough to me to install php-mbstring only, also needed to restart apache.

Related