Schwerwiegender Fehler: Aufruf der undefinierten Funktion mb_strlen ()

70

Ich versuche ein Spendencenter zu erstellen, in dem ich den Quellcode von Totorialzine verwende.

Bis jetzt funktioniert alles gut für mich, aber das einzige Problem, mit dem ich den ganzen Tag zu kämpfen hatte und das ich mir ansehen wollte, ist, dass ich nicht genau herausfinden kann, was mit dem Code tatsächlich nicht stimmt

Folgendes erhalte ich, wenn ich den Kommentar auf der Seite abschicke, wenn meine Besucher spenden.

Fatal error: Call to undefined function mb_strlen() in /home/yoursn0w/public_html/livetv/premium/thankyou.php on line 14

und hier ist der Code in der PHP-Datei.

<?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>';
        }
    }
}

?>

Ich habe meine Datenbank im phpMyAdmin hochgeladen abgeschlossen

Hier folge ich den Anweisungen der Installation

http://tutorialzine.com/2010/05/donation-center-php-mysql-paypal-api/

Ali
quelle
2
php.net/manual/en/mbstring.installation.php - Sie müssen die PHP-Erweiterung mbstring entweder aktivieren oder installieren, um diese Funktion nutzen zu können.
hakre

Antworten:

84

Die Funktion mb_strlen()ist in PHP standardmäßig nicht aktiviert. Bitte lesen Sie das Handbuch für Installationsdetails:

http://www.php.net/manual/en/mbstring.installation.php

AJ.
quelle
1
mbstring.detect_order mbstring.encoding_translation mbstring.func_overload mbstring.http_input mbstring.http_output mbstring.internal_encoding mbstring.language mbstring.substitute_character einer?
Ali
2
@Ali - Viele Systeme haben mehrere Instanzen der Datei php.ini, und es kann verwirrend sein, welcher zu vertrauen ist. Die beste Vorgehensweise besteht darin, eine Testseite unter Ihrer Site zu implementieren, die einfach aufruft phpinfo(). Durchsuchen Sie die Ausgabe dieser Seite nach dem Modul "mbstring". Wenn Sie es dort nicht sehen, ist es nicht installiert.
AJ.
2
@Ali - Sie verlieren keine Daten, wenn Sie eine PHP-Seite erstellen, die nur aufruft phpinfo(). Bitte versuchen Sie dies gemäß meinem vorherigen Kommentar und prüfen Sie, ob tatsächlich mbstring für Ihre Umgebung installiert ist.
AJ.
1
@Ali - zwei Dinge: 1. Ich sehe keine Hinweise darauf, dass mbstring in Ihrer Umgebung installiert ist. Wenn Sie dazu Zugriff haben, müssen Sie es installieren. Siehe den oben angegebenen Dokumentationslink. 2. ENTFERNEN SIE DIE URL FÜR DIE TESTSEITE! Ihr öffentlicher Hostname ist in der Ausgabe von sichtbar phpinfo(). Sie setzen sich einem Risiko aus, indem Sie Ihren öffentlichen Hostnamen veröffentlichen. Meine Absichten sind es, Ihnen zu helfen, aber andere haben möglicherweise böswilligere Absichten.
AJ.
3
@AJ Ich habe endlich mbstring installiert und jetzt funktioniert mein Skript !! Hier ist, was ich getan habe, es war so einfach als ich dachte !!! WHM -> Software -> EasyApache und klicken Sie in Schritt 5 auf Liste der vollständigen Optionen, aktivieren Sie das Kontrollkästchen für Mbstring und fahren Sie mit dem Erstellungsprozess fort. Es ist viel einfacher als dies manuell zu versuchen.
Ali
36

Um dies zu beheben, installieren Sie das Paket php7.0-mbstring:

sudo apt install php7.0-mbstring
Usman
quelle
4
Dies funktioniert auf jedem System, das apt verwendet und Pakete aktualisiert hat, wie Ubuntu 16.06 LTS. Ich musste Apache nach dem Ausführen mit neu starten, sudo systemctl restart apache2bevor ich die mbstring-Funktionen verwenden konnte.
Justin Michael
Benötigt dies für RedBeanPHP am 16.04 LTS mit
Nginx
Für mich: sudo apt installieren php5.6-mbstring && sudo Service nginx reload
Matiss
13

Für mich hat der folgende Befehl den Trick gemacht

sudo apt install php-mbstring
Webmaster
quelle
für Sie vielleicht, aber vielleicht hat das OP keinen Zugriff auf Shell-Befehle.
Funk Forty Niner
6

Auf Centos, RedHat, Fedora und anderen yum-my-Systemen ist es viel einfacher als im PHP-Handbuch angegeben:

yum install php-mbstring
service httpd restart
kubanczyk
quelle
5

Für mich funktionierte dies in Ubuntu 14.04 und für PHP5.6:

$ sudo apt-get install php5.6-mbstring
Mona Jalal
quelle
2

Falls Google nach diesem Fehler sucht

Call to undefined function mb_ereg_match()

bringt jemanden zu diesem Thread. Durch die Installation von php-mbstring wird dies ebenfalls behoben.

Ubuntu 18.04.1, PHP 7.2.10

sudo apt-get install php7.2-mbstring
frmbelz
quelle
1

PHP 7.2 Ubuntu 18.04

sudo apt install php-mbstring
M_R_K
quelle
0

Das hat bei mir auf Debian Stretch funktioniert

sudo apt-get update
sudo apt install php-mbstring
service apache2 restart
Kevin
quelle