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

19

我的项目在本地运行良好,但在线上无法工作,错误如下:

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

我谷歌搜索了一下,发现我需要安装 PHP 扩展iconv。问题是我使用的是 VPS,当我查看可用的 PHP 扩展列表时,没有找到这个扩展!



图片描述
图片描述
图片描述

先行感谢。


1
尝试使用Symfony Polyfills(https://github.com/symfony/polyfill) - qooplmao
@qooplmao 谢谢您的回复,我只需要使用Composer安装它吗?我的意思是除了安装之外,我不需要做任何事情吗? - SlimenTN
@qooplmao 谢谢,这很有帮助 :) - SlimenTN
@Slimen 我有同样的问题,该怎么办才能修复这个错误? - visulo
@nabil 你需要通过composer下载symfony/polyfill-iconv (https://packagist.org/packages/symfony/polyfill-iconv)。 - SlimenTN
6个回答

26
Symfony为像这样的情况提供了一个iconv-polyfill。只需将其添加为项目的要求,您就应该没问题了:
composer require symfony/polyfill-iconv

谢谢,它起作用了。同时感谢@qooplmao的回答 :) - SlimenTN
@Michael 我有同样的问题,如何修复这个错误? - visulo
@nabil,我的解决方案对你也不起作用吗?如果是这样,请开一个新问题并提供尽可能多的信息。你可能需要针对不同的问题使用不同的解决方案。 - Michael Hirschler
3
谢谢,我在cpanel WHM上找到了解决方案:http://cyberpersons.com/2016/10/21/install-missing-php-extensions-cpanelwhm/ - visulo

8
可能出现的情况是你正在使用过时的PHP版本,或者编译时未包含iconv。为了检查这个问题,可以在任何SSH软件中运行“php --ri iconv”,比如Putty等。如果显示“Extension 'iconv' not present.”,那么你的问题就出现在PHP上。你有几个选项: - 运行php -v来检查你的PHP版本,并在必要时进行更新 - 或重新编译带有iconv的PHP - 或在使用WHM/cPanel时启用iconv - 或向你的主机公司寻求支持

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

EasyApache


这里有一个解决方案(命令行适用于CentOS):

4
如果您在CentOS 7操作系统上使用WHM,当在控制台上键入"composer"时,您将遇到以下错误:
致命错误:未捕获的错误:在phar:///opt/cpanel/composer/bin/composer/vendor/symfony/polyfill-mbstring/Mbstring.php:661中调用未定义的函数Symfony\Polyfill\Mbstring\iconv() 堆栈跟踪:
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”,再点击“Customize”。您可以在图片中看到。 EasyApache 4 选择PHP扩展,在搜索框中键入“iconv”,并检查要使用的PHP版本以安装iconv包。请参见图片。 PHP Extensions 选择“Review”。 Review 点击“Provision”。 Provision 为确保已安装iconv包,请使用此命令“php --ri iconv”,如果结果像图片中的结果,则iconv包安装成功。再次尝试输入composer,以免出现任何错误。

php --ri iconv

(保留原文)

4

解决方法:如果您正在使用Cpanel/WHM STACK,请按照以下步骤操作: 前往 WHM >> EasyApache4 >> Current Installed Packages >> customize

现在选择php扩展并搜索iconvdebug,安装它们后再尝试安装...enjoy :)


0

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

需要做的就是

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

是的,我这里有一个很长的路径,但这只是针对我自己的。这是因为我使用了MacPorts。

要找到您的Apache位置,请使用以下命令:

$ ps ax | grep apache 

附言:

我也没有安装iconv扩展。当我像这样调用php信息时,它至少没有列出来:

die(phpinfo()); 

顺便提一下

使用MacPorts安装扩展非常简单,对于我的PHP 5.6,我只需执行以下操作:

$ sudo port install php56-mbstring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接