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

时间:2016-11-25 08:31:11

标签: php symfony vps iconv

我的项目在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扩展列表时,我没有找到这个扩展名!

enter image description here
enter image description here
enter image description here

Thnx提前。

6 个答案:

答案 0 :(得分:18)

Symfony为这样的案例提供了iconv-polyfill。只需将其作为需求添加到您的项目中,您应该没问题:

composer require symfony/polyfill-iconv

答案 1 :(得分:6)

您可能还会使用过时版本的PHP,在没有iconv的情况下编译的版本。

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

如果显示 Extension' iconv'不存在。 ,您的问题是在PHP中。然后你有几个选择:

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

答案 2 :(得分:4)

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

EasyApache

答案 3 :(得分:1)

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

现在选择 php扩展,并搜索 iconv debug 并安装它们,然后尝试重新安装。 >

答案 4 :(得分:1)

如果将WHM与CentOS 7操作系统一起使用,则在控制台上键入“ 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

答案 5 :(得分:0)

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

所需要的只是做

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

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

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

$ ps ax | grep apache 

P.S。

我也没有安装iconv分机。在列表中,当我像这样调用php信息时,它没有列出:

die(phpinfo()); 

BTW

使用MacPorts安装扩展程序非常简单,对于我的PHP 5.6我只做了:

$ sudo port install php56-mbstring