调用未定义的函数 mb_strimwidth
Posted
技术标签:
【中文标题】调用未定义的函数 mb_strimwidth【英文标题】:call to undefined function mb_strimwidth 【发布时间】:2012-12-24 15:56:57 【问题描述】:几个月前,我编写了一个简短的代码,它使用mb_strimwidth()
将一些文本完全放入表格单元格中,在截断字符串的末尾放置点。
现在,经过一段时间后,我尝试执行相同的代码,结果出现以下错误:
Fatal error: Call to undefined function mb_strimwidth() in ...
我试图找到mbstring.php文件,当我找到mb_strimwidth()
函数时,我发现它不再实现了。这怎么可能?
但我的主要问题是:我怎样才能得到与mb_strimwidth()
相同的结果?
我想用循环和mb_strwidth()
重写函数,但是那个mbstring.php文件中的所有函数都是空的。
【问题讨论】:
你的意思是绿色的勾? 啊好的。对不起,我不知道。我现在就去做 【参考方案1】:所有mb_*
函数都由名为Multibyte String 的PHP 扩展提供,内部名称为mbstring
您可能没有激活或安装扩展程序。在大多数 Linux 发行版上,您可以安装包 php-mbstring
来安装和激活此扩展。
如果你使用 mod_php,需要重启 Apache
【讨论】:
好的,这解决了我的问题。但我不明白自上次以来发生了什么,当它正常工作时...... 您可能更新了 php,这是特定于发行版的。例如安装 php-54 包并删除 php 包。 我在我的机器上安装了 php-mbstring 并重新启动了 apache。之后我检查了我的 phpinfo() 但在那里找不到 php-mbstring。我仍然遇到同样的问题。有什么帮助吗?【参考方案2】:刚刚遇到这个问题,如果您使用的是 linux,只需安装软件包 php-mbstring
并重新启动 Apache。
sudo apt-get install php-mbstring
sudo service apache2 restart
如果您使用的是特定的 PHP 版本,您可能需要运行以下命令:
sudo apt-get install php7.x-mbstring
sudo service apache2 restart
用准确的 PHP 版本替换 7.x
。
【讨论】:
【参考方案3】:你需要安装php-mbstring
包试试。
检查php版本
php -v
然后检查mbstring是否已经安装并启用
php -i | grep mbstring
如果没有安装运行这个命令
sudo apt-get install php-mbstring
如果你是php其他版本示例:7.1、7.2、7.0基于 像这样运行命令:
sudo apt-get install php7.1-mbstring
如果你使用 nginx 服务器运行 laravel .. 然后检查你在 conf 文件中加载了哪个版本的 nginx 配置文件..
转到cd /etc/nginx/sites-available
并打开您的配置文件..
如果你在 nginx conf 文件中加载 php7.2 版本..
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
然后你需要安装 7.2 mbstring 包..
sudo apt-get install php7.2-mbstring
和重启 apache2服务器
sudo service apache2 restart
【讨论】:
【参考方案4】:如果你已经安装了 mbstring,那么你必须在 php.ini 文件中调用这个扩展。
首先,检测你的 php-fpm.ini 文件或 php.ini 文件在哪里。
运行命令
php -i | grep php.ini
它会返回 php.ini 文件的路径。
例如
/etc/php.ini
然后用 vim 或其他编辑器打开文件
vim /etc/php.ini
然后在 php.ini 文件中添加 mbstring 扩展名
extension=mbstring.so;
最后,重启php-fpm
systemctl restart php-fpm
【讨论】:
以上是关于调用未定义的函数 mb_strimwidth的主要内容,如果未能解决你的问题,请参考以下文章