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

Call to undefined function Symfony\Polyfill\Mbstring\iconv_strlen()

我的项目在本地主机上工作正常但不能联机工作,这是错误:

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 扩展列表时,我没有找到此扩展!



提前致谢。

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

composer require symfony/polyfill-iconv

您使用的 PHP、 的过时版本也可能是在没有 iconv 的情况下编译的。

要检查,运行 php --ri iconv 使用任何 SSH 软件,如 Putty 等

如果它显示 扩展名 'iconv' 不存在。,您的问题出在 PHP。那么你有几个选择:

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

我在安装 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()); 

顺便说一句

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

$ sudo port install php56-mbstring

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

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

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

如果您在 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

Select PHP 扩展,在搜索中输入 "iconv" 并检查将用于安装 iconv 包的 php 版本。见图片

PHP Extensions

选择评论

Review

单击提供

Provision

要确保安装了 iconv 包,如果结果如图所示,您可以使用此命令 "php --ri iconv"。那么 iconv 包就成功了。尝试再次输入作曲家,这样您就不会再收到任何错误

php --ri iconv