调用未定义函数 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 并搜索 iconv 和 debug 安装它们并尝试再次安装.. 享受:)
【讨论】:
【参考方案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()的主要内容,如果未能解决你的问题,请参考以下文章