调用未定义函数 Symfony\Polyfill\Mbstring\iconv_strlen()

Posted

技术标签:

【中文标题】调用未定义函数 Symfony\\Polyfill\\Mbstring\\iconv_strlen()【英文标题】:Call to undefined function Symfony\Polyfill\Mbstring\iconv_strlen()调用未定义函数 Symfony\Polyfill\Mbstring\iconv_strlen() 【发布时间】:2017-04-09 14:19:09 【问题描述】:

我的项目在 localhost 上运行良好,但无法在线运行,这是错误:

Fatal error: Call to undefined function Symfony\Polyfill\Mbstring\iconv_strlen() in /home/stram/public_html/vendor/symfony/polyfill-mbstring/Mbstring.php on line 338

我google了一下,发现需要安装PHP扩展iconv。我使用 VPS 的问题,当我进入可用 PHP 扩展列表时,我没有找到这个扩展!

提前谢谢。

【问题讨论】:

试试 symfony polyfills (github.com/symfony/polyfill) @qooplmao 谢谢你的回复,我应该用 composer 安装它吗?我的意思是除了安装我什么都不用做? @qooplmao 谢谢你很有帮助:) @Slimen 我也有同样的问题,如何解决这个错误? @nabil 你需要通过 composer 下载 symfony/polyfill-iconv (packagist.org/packages/symfony/polyfill-iconv) 【参考方案1】:

如果您在 CentOS 7 操作系统上使用 WHM,您在控制台上输入“composer”时会遇到如下错误:

致命错误:未捕获错误:在 phar:///opt/cpanel/composer/bin/composer/vendor/symfony/polyfill-mbstring/Mbstring.php 中调用未定义函数 Symfony\Polyfill\Mbstring\iconv(): 661 堆栈跟踪:

0 phar:///opt/cpanel/composer/bin/composer/vendor/symfony/polyfill-mbstring/bootstrap.php(48): Symfony\Polyfill\Mbstring\Mbstring::mb_strwidth('help', ' ASCII')

......

解决方法是使用WHM安装iconv包:

输入您的 WHM,然后键入“EasyApache 4”,然后单击“EasyApache 4”并单击“自定义”。你可以在图片中看到

EasyApache 4

选择 PHP Extensions,在搜索中键入“iconv”并检查您将用于安装 iconv 包的 php 版本。看图

PHP Extensions

选择评论

Review

点击配置

Provision

为确保安装了iconv包,如果结果如图所示,可以使用此命令“php --ri iconv”。那么iconv包就成功了。尝试再次输入作曲家,以免出现更多错误

php --ri iconv

【讨论】:

【参考方案2】:

已解决:如果您使用的是 Cpanel/WHM STACK,请执行以下操作: 转到 WHM >> EasyApache4 >> 当前安装的软件包 >> 自定义

现在选择 php extensions 并搜索 iconvdebug 安装它们并尝试再次安装.. 享受:)

【讨论】:

【参考方案3】:

这是您问题的解决方案(命令行适用于 CentOS):

【讨论】:

【参考方案4】:

当我安装 Mbstring 扩展但没有重新启动 Apache 时,我收到了同样的错误消息。

所有需要做的事情

$ sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart

是的,我在这里有很长的路要走,但它只适合我。这是因为我使用 MacPorts

要查找您的 Apache 位置,请使用

$ ps ax | grep apache 

附:

我也没有安装iconv 扩展。在列表中,当我像这样调用 php info 时,它没有列出:

die(phpinfo()); 

顺便说一句

用 MacPorts 安装扩展真的很容易,对于我的 PHP 5.6 我已经完成了:

$ sudo port install php56-mbstring

【讨论】:

【参考方案5】:

您也可能使用过时的 PHP 版本,编译时没有使用 iconv。

要检查这一点,请使用任何 SSH 软件(如 Putty 等)运行 php --ri iconv

如果它显示Extension 'iconv' not present.,你的问题出在 PHP 上。那么你有几个选择:

运行 php -v 检查您的 PHP 版本,并在必要时更新它 或者用iconv重新编译PHP 或在 WHM/cPanel 上启用 iconv,如果您使用它们 或向您的托管公司寻求支持

【讨论】:

【参考方案6】:

Symfony 为这种情况提供了一个 iconv-polyfill。只需将其作为项目要求添加到您的项目中,就可以了:

composer require symfony/polyfill-iconv

【讨论】:

谢谢它的工作。也感谢@qooplmao 的回答:) @Michael 我也有同样的问题,怎么解决这个错误? @nabil 我的解决方案不是也适合您吗?如果是这样,请提出一个新问题并提供尽可能多的信息。对于不同的问题,您可能需要不同的解决方案。 谢谢,我用 cpanel WHM 找到了解决方案:cyberpersons.com/2016/10/21/…

以上是关于调用未定义函数 Symfony\Polyfill\Mbstring\iconv_strlen()的主要内容,如果未能解决你的问题,请参考以下文章

数据流 - 未调用函数 - 错误 - 未定义名称

调用未定义函数 Mpdf\\Mpdf()

辅助函数未加载 laravel 5 - 调用未定义函数

如果子类未定义构造函数,是不是会调用父构造函数?

Codeigniter:调用未定义的函数(模型)

调用类方法时出现“调用未定义函数”错误