Fatal error: Call to undefined function mb_internal_encoding() in /usr/local/apache2/htdocs/include/application.php on line 29

解决方案 »

  1.   

    mbstring
    查看php.ini里是否加载了php_mbstring.dll
      

  2.   

    dll是win下的库,而楼主是Linux。[mbstring]
    ;多字节字符串模块支持mbstring.language = “neutral”
    ; 默认的NLS(本地语言设置),可设置值如下:
    ; 默认值”neutral”表示中立,相当于未知。
    ; “zh-cn”或”Simplified Chinese”表示简体中文
    ; “zh-tw”或”Traditional Chinese”表示繁体中文
    ; “uni”或”universal”表示Unicode
    ; 该指令自动定义了随后的mbstring.internal_encoding指令默认值,
    ; 并且mbstring.internal_encoding指令必须放置在该指令之后。mbstring.internal_encoding =
    ; 本指令必须放置在mbstring.language指令之后。
    ; 默认的内部编码,未设置时取决于mbstring.language指令的值:
    ; “neutral” 对应 “ISO-8859-1″
    ; “zh-cn” 对应 “EUC-CN” (等价于”GB2312″)
    ; “zh-tw” 对应 “EUC-TW” (等价于”BIG5″)
    ; “uni” 对应 “UTF-8″
    ; 提醒:对于简体中文还可以强制设置为”CP936″ (等价于”GBK”)
    ; 注意:可能 SJIS, BIG5, GBK 不适合作为内部编码,不过”GB2312″肯定没问题。
    ; 建议手动强制指定mbstring.encoding_translation = Off
    ; 是否对进入的HTTP请求按照mbstring.internal_encoding指令进行透明的编码转换,
    ; 也就是自动检测输入字符的编码并将其透明的转化为内部编码。
    ; 可移植的库或者程序千万不要依赖于自动编码转换。mbstring.http_input = “pass”
    ; 默认的HTTP输入编码,”pass”表示跳过(不做转换)
    ; “aotu”的含义与mbstring.detect_order指令中的解释一样。
    ; 可以设置为一个单独的值,也可以设置为一个逗号分隔的列表。mbstring.http_output = “pass”
    ; 默认的HTTP输出编码,”pass”表示跳过(不做转换)
    ; “aotu”的含义与mbstring.detect_order指令中的解释一样。
    ; 可以设置为一个单独的值,也可以设置为一个逗号分隔的列表。
    ; 必须将output_handler指令设置为”mb_output_handler”才可以。mbstring.detect_order =
    ; 默认的编码检测顺序,”pass”表示跳过(不做转换)。
    ; 默认值(”auto”)随mbstring.language指令的不同而变化:
    ; “neutral”和”universal” 对应 “ASCII, UTF-8″
    ; “Simplified Chinese” 对应 “ASCII, UTF-8, EUC-CN, CP936″
    ; “Traditional Chinese” 对应 “ASCII, UTF-8, EUC-TW, BIG-5″
    ; 建议在可控环境下手动强制指定一个单一值mbstring.func_overload = 0
    ;SYS
    ; 自动使用 mb_* 函数重载相应的单字节字符串函数。
    ; 比如:mail(), ereg() 将被自动替换为mb_send_mail(), mb_ereg()
    ; 可用 0,1,2,4 进行位组合。比如7表示替换所有。具体替换说明如下:
    ; 0: 无替换
    ; 1: mail() → mb_send_mail()
    ; 2: strlen() → mb_strlen() ; substr() → mb_substr()
    ; strpos() → mb_strpos() ; strrpos() → mb_strrpos()
    ; strtolower() → mb_strtolower() ; strtoupper() → mb_strtoupper()
    ; substr_count() → mb_substr_count()
    ; 4: ereg() → mb_ereg() ; eregi() → mb_eregi()
    ; ereg_replace() → mb_ereg_replace() ; eregi_replace() → mb_eregi_replace()
    ; split() → mb_split()mbstring.scrīpt_encoding =
    ; 脚本所使用的编码mbstring.strict_detection = Off
    ; 是否使用严谨的编码检测mbstring.substitute_character =
    ; 当某个字符无法解码时,就是用这个字符替代。
    ; 若设为一个整数则表示对应的Unicode值,不设置任何值表示不显示这个错误字符。
    ; 建议设为”□”mbstring.strict_encoding = Off ;默认值未知
    ; enable strict encoding detection.
    ; 对于这个指令尚无说明文档
      

  3.   

    php.ini中找到
    ;extension=php_mbstring.dll去掉前面分号。重启apache试试。
      

  4.   

    /usr是linux的哈,如2楼所说。
    php_mbstring.so
    另外,不同版本的PHP,安装扩展方式也不同。有的只要做一个link到某个特定文件夹即可。
      

  5.   

    mbstring php已经自带了,编译php的时候带上 -enable-mbstring 即可.重新编译下php吧
    或者另外编译 mbstring.
      

  6.   

    怎么编译PHP 我没有学习过php 只是临时在apache上发布一个php项目 比菜鸟还菜鸟
      

  7.   

    复制的 自己核对路径 步骤和指令一样1 进入php源代码目录中的mbstring所在目录
    cd /usr/local/src/php-5.2.4/ext/mbstring/
    2 执行php安装后目录中的bin/phpize文件
    /usr/local/php/bin/phpize
    3 进入php源代码目录
    cd /usr/local/src/php-5.2.4/
    4 执行上述目录中的configure文件
    ./configure --prefix=/usr/local/src/php-5.2.4/ext/mbstring --with-php-config=/usr/local/php/bin/php-config
    5 make; make install
    将mbstring.so安装到/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/中
    6 编辑php.ini,加入一行
    extension=mbstring.so
    7 重新启动httpd
    service httpd restart
    (如果是php-cgi模式的,请先杀掉所有的php-cgi进程,再重启httpd)
      

  8.   

    3步:
    1、./configure --prefix=/usr/nc-home/php5 --with-apxs2=/usr/nc-home/apache/bin/apxs --with-mysql=/usr/nc-home/mysql --with-config-file-path=/etc --disable-debug --with-openssl --with-iconv=/usr/local/lib --enable-mbstring
    2、make
    3、make install
    中间若报错,看错误提示安装或修改所需程序。
      

  9.   

    不用重新编译php的。我怀疑楼主安装的php是不是用了for windows的版本?
      

  10.   

    编译php比较蛋痛,你就先别弄了,直接编译个 mbstring 扩展上去好了。
      

  11.   

    服务器上是找人安装的apache+mysql+php  所以不清楚安装的php是那个版本
      

  12.   

    Fatal error: Call to undefined function mb_internal_encoding() in /usr/local/apache2/htdocs/include/application.php on line 29
     我把这个第29行注释掉就么事了 真郁闷啊
      

  13.   

    其实这个问题还没有解决 原因可能是 mb_internal_encoding 这个函数扩展不了
      

  14.   

    1、在php538\ext文件下放php_mbstring.dll文件 
    2、在php.ini下面添一句extension=php_mbstring.dll   引入的意思