Вызов функции undefined Symfony\Polyfill\Mbstring\iconv_strlen()

Мой проект работает нормально на 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

Я погуглил и обнаружил, что мне нужно установить расширение PHP iconv. Проблема в том, что я использую VPS, и когда я перешел к списку доступных расширений PHP, я не нашел это расширение!

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

Спасибо заранее.

Ответ 1

Symfony предоставляет iconv- polyfill для подобных случаев. Просто добавьте его в качестве требования к вашему проекту, и вы должны быть в порядке:

composer require symfony/polyfill-iconv

Ответ 2

Также может случиться, что вы используете устаревшую версию PHP, или, которая была скомпилирована без iconv.

Чтобы проверить это, запустите php --ri iconv с любым программным обеспечением SSH, таким как Putty и т.д.

Если он показывает Расширение 'iconv' не присутствует., ваша проблема в PHP. Затем у вас есть несколько вариантов:

  • Запустите php -v, чтобы проверить вашу версию PHP, и при необходимости обновите его
  • Или снова скомпилируйте PHP с помощью iconv
  • Или включить iconv в WHM/cPanel, если вы используете их
  • Или попросите свою хостинговую компанию для поддержки.

Ответ 3

Вот решение вашей проблемы (командная строка для CentOS):

EasyApache

Ответ 4

Решено: Если вы используете Cpanel/WHM STACK, выполните следующие действия: Перейдите на WHM >> EasyApache4 >> Текущие установленные пакеты >> customize

Теперь выберите php extensions и найдите iconv и debug, установите их оба и попробуйте установить снова... наслаждайтесь :)

Ответ 5

У меня было такое же сообщение об ошибке, когда я установил расширение 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

Ответ 6

Если вы используете WHM с операционной системой CentOS 7, вы будете сталкиваться с такими ошибками при вводе "composer" на консоли:

Неустранимая ошибка: необработанная ошибка: вызов неопределенной функции Symfony\Polyfill\Mbstring\iconv() в phar:///opt/cpanel/composer/bin/composer/vendor/symfony/polyfill-mbstring/Mbstring.php: 661 Трассировка стека:

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

......

Решением является установка пакета iconv с помощью WHM:

Войдите в свой WHM, затем введите "EasyApache 4", затем нажмите "EasyApache 4" и нажмите "Настроить". Вы можете видеть на картинке

EasyApache 4

Выберите расширения PHP, введите "iconv" в поиске и проверьте версию php, которую вы будете использовать для установки пакета iconv. увидеть на картинке

Расширения PHP

Выберите обзор

ОбзорНажмите Provision

Предоставление

Чтобы убедиться, что пакет iconv установлен, вы можете использовать эту команду "php --ri iconv", если результаты выглядят так, как показано на рисунке. тогда пакет iconv завершился успешно. попробуйте еще раз ввести композитор, чтобы больше не возникало ошибок

php --ri iconv