7 Stimmen

PHP: Aufruf einer undefinierten Funktion mb_strlen() - bei benutzerdefiniert kompiliertem PHP mit aktiviertem mbstring

Ich habe dieses benutzerdefinierte kompilierte PHP (v5.3.3) mit den folgenden Erweiterungen aktiviert (über configure):

./configure 
--prefix=/usr/local/php5.3.3 
--with-config-file-path=/usr/local/apache2/conf 
--with-apxs2=/usr/local/apache2/bin/apxs 
--with-bz2 
--with-curl=/usr/lib 
--with-curlwrappers 
--with-freetype-dir=/usr/local 
--with-gd=/usr/local 
--with-gettext 
--with-gmp 
--with-iconv=/usr/local 
--with-imap=/usr/local/imap2007e 
--with-imap-ssl 
--with-jpeg-dir=/usr/local/lib 
--with-kerberos 
--with-libxml-dir=/usr/lib 
--with-mcrypt=/usr/local 
--with-mhash 
--with-mysql=/usr/lib/mysql 
--with-mysql-sock=/var/lib/mysql/mysql.sock 
--with-mysqli=/usr/lib/mysql/mysql_config 
--with-openssl=/usr 
--with-pcre-dir=/usr/local/lib 
--with-pear 
--with-png-dir=/usr/local/lib 
--with-readline 
--with-sqlite 
--with-xmlrpc 
--with-xsl=/usr/local 
--with-zlib-dir=/usr/local/lib 
--with-zlib=/usr/local 
--without-pgsql 
--enable-bcmath 
--enable-calendar 
--enable-exif 
--enable-embedded-mysqli=shared 
--enable-ftp 
--enable-gd-jis-conv 
--enable-gd-native-ttf 
--enable-mbstring=all 
--enable-mbregex 
--enable-shared 
--enable-sockets 
--enable-soap 
--enable-sqlite-utf8 
--enable-zend-multibyte 
--enable-zip 
--disable-pdo 
--disable-phar 

phpinfo() besagt eindeutig, dass mbstring aktiviert ist: alt text

Das Komische ist, wenn ich versuche, einige PHP-Skripte (SugarCRM-Updates) auszuführen, wird folgender Fehler gemeldet:

PHP Schwerwiegender Fehler: Aufruf einer undefinierten Funktion mb_strlen() in crm/include/pclzip/pclzip.lib.php auf Zeile 4165

Kann jemand etwas Licht in WARUM dies geschieht und wie man dies beheben?

Danke, m^e

2voto

ajreal Punkte 45851

Für PHP 4.3.3 oder früher müssen Sie eine der folgenden Optionen für den LANG-Parameter von --enable-mbstring=LANG angeben: --enable-mbstring=cn für die Unterstützung von vereinfachtem Chinesisch, --enable-mbstring=tw für die Unterstützung von traditionellem Chinesisch, --enable-mbstring=kr für die Unterstützung von Koreanisch, --enable-mbstring=ru für die Unterstützung von Russisch und --enable-mbstring=ja für die Unterstützung von Japanisch (Standard). Um alle unterstützten Kodierungen zu aktivieren, verwenden Sie --enable-mbstring=all

Versuchen Sie

  • erneut konfigurieren mit --enable-mbstring nur

  • grep mb_strlen $PATH_TO_YOUR_PHP_BINARY um zu sehen, ob sie existiert

2voto

Uwe Keim Punkte 38139

Auf meinem Windows-System mit PHP und Apache musste ich die PHP.INI-Datei so ändern, dass sie die folgende Zeile enthält:

extension=php_mbstring.dll

(innerhalb des Haupt [PHP] Abschnitt) und starten Sie Apache neu. Danach wird der Aufruf von mb_strlen war erfolgreich.

1voto

Grigory Ilizirov Punkte 961

Ich hatte das gleiche Problem, dies ist ein Problem mit der php-Version.

erster Lauf

sudo apt install php-mbstring

um mbstring auf die letzte installierte Version von php zu installieren

dann laufen:

 sudo apt-get dist-upgrade

und starten Sie apache neu mit

 sudo /etc/init.d/apache2 restart

Viel Glück!

0voto

J Bourne Punkte 1411

Fügen Sie diese phpinfo() in eine php-Datei für die Ausgabe ein. Und suchen Sie dort nach einem separaten MbString-Kästchen, wenn es nicht vorhanden ist, dann ist es nicht richtig installiert.

-2voto

Einfache Lösung.

Stattdessen mb_strlen() nur verwenden strlen() .

Bei mir hat es ein paar Mal funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X