【问题标题】:Fatal error: Call to undefined function mb_strlen()致命错误:调用未定义函数 mb_strlen()
【发布时间】:2011-06-21 00:33:11
【问题描述】:

我正在尝试使用 Totorialzine 的源代码创建一个捐赠中心。

到目前为止,我现在一切正常,但唯一的问题是我一直在努力解决并试图查看一整天并且无法弄清楚代码到底有什么问题

这是我在访问者捐款时在页面上提交评论时得到的结果。

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

这是php文件中的代码。

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

?>

我的 phpMyAdmin 中的数据库已上传完成

这里是我按照安装说明进行的地方

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

【问题讨论】:

标签: php


【解决方案1】:

mb_strlen() 函数在 PHP 中默认不启用。安装详情请阅读手册:

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

【讨论】:

  • mbstring.detect_order mbstring.encoding_translation mbstring.func_overload mbstring.http_input mbstring.http_output mbstring.internal_encoding mbstring.language mbstring.substitute_character 这是我发现哪一个将定义与我必须启用的相同的内容你能指点我正确的吗?
  • @Ali - 许多系统都有多个 php.ini 文件实例,可能会混淆信任哪个实例。最好的做法是在您的站点下实现一个测试页面,该页面只需调用phpinfo()。在该页面的输出中搜索“mbstring”模块。如果您在那里没有看到它,则说明它没有安装。
  • @Ali - 通过创建一个只调用 phpinfo() 的 PHP 页面,您不会丢失任何数据。请按照我之前的评论尝试这个,看看是否真的为您的环境安装了 mbstring。
  • @Ali - 两件事:1. 我没有看到任何证据表明您的环境中安装了 mbstring。如果您有权这样做,则需要安装它。请参阅我上面提供的文档链接。 2.删除测试页的URL!您的公共主机名在 phpinfo() 的输出中可见。通过发布您的公共主机名,您将自己暴露在风险之中。我的目的是帮助你,但其他人可能有更多的恶意。
  • @AJ 我终于安装了 mbstring,现在我的脚本可以工作了!!这就是我所做的,它比我想象的要简单!!! WHM -> Software -> EasyApache 并在第 5 步中单击 Exhaustive Options List 并选中 Mbstring 框并继续构建过程。这比尝试手动执行此操作要简单得多。
【解决方案2】:

要解决此问题,请安装 php7.0-mbstring 包:

sudo apt install php7.0-mbstring

【讨论】:

  • 这适用于任何使用 apt 并已更新软件包的系统,例如 Ubuntu 16.06 LTS。在使用 sudo systemctl restart apache2 运行此程序后,我需要重新启动 Apache,然后才能使用 mbstring 函数。
  • 在 16.04 LTS 上使用 nginx 的 RedBeanPHP 需要这个
  • 对我来说:sudo apt install php5.6-mbstring && sudo service nginx reload
【解决方案3】:

对我来说,下面的命令成功了

sudo apt install php-mbstring

【讨论】:

  • 可能对你有用,但也许 OP 无权访问 shell 命令。
【解决方案4】:

在 Centos、RedHat、Fedora 和其他 yum-my 系统上,它比 PHP 手册建议的要简单得多:

yum install php-mbstring
service httpd restart

【讨论】:

    【解决方案5】:

    对我来说,这适用于 Ubuntu 14.04 和 php5.6:

    $ sudo apt-get install php5.6-mbstring
    

    【讨论】:

      【解决方案6】:

      万一谷歌搜索这个错误

      Call to undefined function mb_ereg_match()
      

      将某人带到此线程。安装 php-mbstring 也可以解决。

      Ubuntu 18.04.1,PHP 7.2.10

      sudo apt-get install php7.2-mbstring
      

      【讨论】:

        【解决方案7】:

        PHP 7.2 Ubuntu 18.04

        sudo apt install php-mbstring
        

        【讨论】:

          【解决方案8】:

          这对我来说在 Debian stretch

          上很有用
          sudo apt-get update
          sudo apt install php-mbstring
          service apache2 restart
          

          【讨论】:

          • 谢谢!我只安装php-mbstring是不够的,还需要重启apache。
          【解决方案9】:

          这个问题看起来与 Unix 上的 PHP 有关。但是,对于任何在 Windows 上遇到这个 PHP 问题的人,请参阅 https://www.php.net/manual/en/install.pecl.windows.php

          由于多字节字符串支持是一个核心 PHP 扩展,因此在 Windows 上只需在 php.ini 中取消注释此行:

          extension=php_mbstring.dll
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-05
            • 1970-01-01
            • 2012-07-18
            • 2017-01-25
            • 2012-06-28
            • 2014-03-27
            相关资源
            最近更新 更多