Ответ 1
Symfony предоставляет iconv- polyfill для подобных случаев. Просто добавьте его в качестве требования к вашему проекту, и вы должны быть в порядке:
composer require symfony/polyfill-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
Я погуглил и обнаружил, что мне нужно установить расширение PHP iconv
. Проблема в том, что я использую VPS, и когда я перешел к списку доступных расширений PHP, я не нашел это расширение!
Спасибо заранее.
Symfony предоставляет iconv- polyfill для подобных случаев. Просто добавьте его в качестве требования к вашему проекту, и вы должны быть в порядке:
composer require symfony/polyfill-iconv
Также может случиться, что вы используете устаревшую версию PHP, или, которая была скомпилирована без iconv.
Чтобы проверить это, запустите php --ri iconv
с любым программным обеспечением SSH, таким как Putty и т.д.
Если он показывает Расширение 'iconv' не присутствует., ваша проблема в PHP. Затем у вас есть несколько вариантов:
Вот решение вашей проблемы (командная строка для CentOS):
Решено: Если вы используете Cpanel/WHM STACK, выполните следующие действия: Перейдите на WHM >> EasyApache4 >> Текущие установленные пакеты >> customize
Теперь выберите php extensions и найдите iconv и debug, установите их оба и попробуйте установить снова... наслаждайтесь :)
У меня было такое же сообщение об ошибке, когда я установил расширение 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
Если вы используете 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" и нажмите "Настроить". Вы можете видеть на картинке
Выберите расширения PHP, введите "iconv" в поиске и проверьте версию php, которую вы будете использовать для установки пакета iconv. увидеть на картинке
Выберите обзор
ОбзорНажмите Provision
Чтобы убедиться, что пакет iconv установлен, вы можете использовать эту команду "php --ri iconv", если результаты выглядят так, как показано на рисунке. тогда пакет iconv завершился успешно. попробуйте еще раз ввести композитор, чтобы больше не возникало ошибок