PHP: вызов неопределенной функции mb_strlen () - на специально скомпилированном PHP с включенной mbstring - PullRequest
7 голосов
/ 17 ноября 2010

У меня есть этот специально скомпилированный PHP (v5.3.3) со следующими включенными расширениями (через конфигурацию):

./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 () четко указывает, что mbstring включен: alt text

Забавно, что когда я пытаюсь запустить некоторые PHP-скрипты (обновления SugarCRM), он сообщает об ошибке:

Неустранимая ошибка PHP: вызов неопределенной функции mb_strlen () в crm / include / pclzip / pclzip.lib.php в строке 4165

Может ли кто-нибудь пролить свет на ПОЧЕМУ это происходит и как это исправить?

Спасибо, м ^ е

Ответы [ 5 ]

2 голосов
/ 26 февраля 2013

В моей системе Windows с PHP и Apache мне пришлось изменить файл PHP.INI, добавив в него следующую строку:

extension=php_mbstring.dll

(внутри основного раздела [PHP]) и перезапустите Apache. После этого звонок на mb_strlen удался.

2 голосов
/ 17 ноября 2010

Для PHP 4.3.3 или более ранней версии. Чтобы включить эту функцию, вам нужно будет указать один из следующих параметров для параметра LANG параметра --enable-mbstring = LANG; --enable-mbstring = cn для поддержки упрощенного китайского языка, --enable-mbstring = tw для поддержки традиционного китайского языка, --enable-mbstring = kr для поддержки корейского языка, --enable-mbstring = ru для поддержки русского языка и --enable -mbstring = ja для поддержки японского языка (по умолчанию). Чтобы включить все поддерживаемые кодировки, используйте --enable-mbstring = all

попробуй

  • снова настроить с --enable-mbstring только

  • grep mb_strlen $PATH_TO_YOUR_PHP_BINARY чтобы увидеть, существует ли он

0 голосов
/ 07 января 2017

У меня была такая же проблема, это проблема с версией php.

первый запуск

sudo apt install php-mbstring

для установки mbstring на последнюю установленную версию php

затем запустите:

 sudo apt-get dist-upgrade

и перезапустите apache с помощью

 sudo /etc/init.d/apache2 restart

Удачи

0 голосов
/ 26 сентября 2012

Простое решение.

Вместо mb_strlen() используется только strlen().

Мне это сработало несколько раз.

0 голосов
/ 17 ноября 2010

Поместите этот phpinfo () в некоторый php-файл для вывода.И найдите там отдельный блок MbString, если его нет, значит, он установлен неправильно.

...