gpt4 book ai didi

php - 无法在 PHP 中启用 mb_string

转载 作者:行者123 更新时间:2023-12-04 19:10:20 25 4
gpt4 key购买 nike

我需要使用 mb_strlen用变音符号对一组单词进行排序,但 PHP 无法识别此功能,尽管 mb_string已安装。

所以,如果我说

function sortByStrlen($a, $b)
{
if (mb_strlen($a, "utf-8") === mb_strlen($b, "utf-8")) {
return $a > $b;
} else {
return mb_strlen($b, "utf-8") - mb_strlen($a, "utf-8");
}
}

#sort my array
usort($myArray, 'sortByStrlen');


无法在服务器上运行的我的 Ubuntu 虚拟机上运行,​​尽管它在我的 Windows 本地机器上运行,

我花了超过 2.5 个小时来搜索这个问题,并且在 StackOverflow 和 AskUbuntu 中都尝试了很多解决方案。

这些解决方案对我不起作用:

PHP: Call to undefined function mb_strlen() - on custom compiled PHP with mbstring enabled

Fatal error: Call to undefined function mb_strlen()

Call to undefined function yii\helpers\mb_strlen() on PHP in Yii2 Framework

https://askubuntu.com/questions/772397/mbstring-is-missing-for-phpmyadmin-in-ubuntu-16-04

这只是仅举几例!我进行了深入搜索,但没有找到我需要的东西。请不要将其标记为重复,因为我真的需要帮助(确实,这个问题让我很累)。

我已经通过终端安装了 mb_string:
sudo apt-get install php7.3-mbstring

我确定 mbstring模块与我的 PHP 版本兼容。然后,我取消注释 php.ini 中的行以激活 mbstring模块
;extension=mbstring

我还取消了扩展的注释:
extension_dir = "./"

我重新启动了服务器:
 sudo /etc/init.d/apache2 restart

我还看到了其他模块,例如 mysql , 当我使用 php-m .

当我运行 phpinfo ,我可以看到 mbstring位于正在加载的模块列表中。

如果我运行 php -m在终端上,它会给我一个模块列表和 mbstring在那儿。

但是,如果我运行:
<?php

var_dump(extension_loaded('mbstring'));

它将输出:
bool(false)

然而,在这一切之后,我多次重新启动 Apache 和 MySQL。所以我不明白为什么 mbstring未启用!

正如本文开头所解释的,我需要按长度对带有变音符号的单词进行排序。因此,如果您对此有其他解决方案,我会接受。

我没有收到错误消息,因为这是用于生产的。代码在我个人网站的虚拟机中运行;因为它是生产环境,PHP 默认不显示错误,我不知道如何启用它们。

备注:
Ubuntu 版本是 18.04
PHP版本是7.3

更新 2

根据@gview 的要求,如果我运行 dpkg -l | grep php ,我得到:
ii  libapache2-mod-php7.3           7.3.7-2+ubuntu18.04.1+deb.sury.org+1                     amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii php-common 2:69+ubuntu18.04.1+deb.sury.org+2+php7.3 all Common files for PHP packages
ii php-gettext 1.0.12-0.1 all transitional dummy package for php-php-gettext
ii php-mbstring 2:7.3+69+ubuntu18.04.1+deb.sury.org+2+php7.3 all MBSTRING module for PHP [default]
ii php-pear 1:1.10.8+submodules+notgz-1+ubuntu18.04.1+deb.sury.org+1 all PEAR Base System
ii php-php-gettext 1.0.12-0.1 all read gettext MO files directly, without requiring anything other than PHP
ii php-xml 2:7.3+69+ubuntu18.04.1+deb.sury.org+2+php7.3 all DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii php7.3 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 all server-side, HTML-embedded scripting language (metapackage)
ii php7.3-cli 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 command-line interpreter for the PHP scripting language
ii php7.3-common 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 documentation, examples and common module for PHP
ii php7.3-json 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 JSON module for PHP
ii php7.3-mbstring 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 MBSTRING module for PHP
ii php7.3-mysql 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 MySQL module for PHP
ii php7.3-opcache 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 Zend OpCache module for PHP
ii php7.3-readline 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 readline module for PHP
ii php7.3-xml 7.3.7-2+ubuntu18.04.1+deb.sury.org+1 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHP

这可能会帮助你帮助我。

最佳答案

经过 3.5 多个小时的搜索,我找到了解决方案!!!我希望它会帮助别人!

错误

所以,问题是 extension_dirphp.ini文件被设置为错误的文件。默认情况下,它是以下内容:

extension_dir = './'

解决方案
  • 打开你的终端ctrl+alt+t并输入:
  • php -i | grep extension_dir

    就我而言,它输出:
    /user/lib/php/20180731
  • 找出您的php.ini文件:
    您可以通过以下方式做到这一点:
  • <?php
    phpinfo();

    或者在终端上
    php -i | grep 'php.ini'
  • 转到您的 php.ini文件并更改以下行:
  • extension_dir = '/full/path/to/your/php/modules'

    就我而言,它是:
    exension_dir = '/usr/lib/php/20180731'

    查看更多

    顺便说一句,安装后必须这样做 mbstring .为此,您可能会发现以下链接很有用:

    PHP: Call to undefined function mb_strlen() - on custom compiled PHP with mbstring enabled

    Fatal error: Call to undefined function mb_strlen()

    Call to undefined function yii\helpers\mb_strlen() on PHP in Yii2 Framework

    https://askubuntu.com/questions/772397/mbstring-is-missing-for-phpmyadmin-in-ubuntu-16-04

    关于php - 无法在 PHP 中启用 mb_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57244829/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com