То же самое с Magento CE 1.8 и 1.9
После обновления php с 5.5.16 до 5.6.0 на моем VPS я получил эти 2 ошибки в [magento] /var/log/system.log:
ERR (3): Deprecated functionality: iconv_set_encoding(): Use of iconv.internal_encoding is deprecated in [magento]/lib/Zend/Locale/Format.php on line 311
ERR (3): Deprecated functionality: iconv_set_encoding(): Use of iconv.internal_encoding is deprecated in [magento]/lib/Zend/Locale/Format.php on line 472
Я нашел эту информацию https://github.com/zendframework/zf1/pull/347 Но все изменения в php.ini у меня не работают (я перезапускал службу php-fpm после каждого изменения в php.ini, конечно ).
Здесь https://github.com/zendframework/zf1/pull/347/files#r14075423 Я прочитал предлагаемые изменения именно в этих строках (313 и 474), но я не хочу использовать какие-либо хаки для файлов Magento Core.
В frontend и backend я не вижу проблем с кодировкой - все выглядит хорошо (у меня русская локализация - frontend и админ-панель).
Могу ли я игнорировать эту ERR в system.log или нет? Какой правильный способ исправить эту ошибку?
источник
Ответы:
Я не думаю, что вы должны использовать Magento с php 5.6.
Я предполагаю, что будет официальное заявление, когда Magento будет поддерживать php 5.6 и официальный патч, если это необходимо.
источник
Вы можете использовать следующий патч:
Это из полного Github-Gist:
источник
patch -p1 < 0001-BUGIFX-Magento-Zend-Framework-1-PHP5.6.patch
kudos для @ mautz-et-tongВам необходимо изменить
lib/Zend/Validate/Hostname.php
и заменитьinternal_encoding
связанные вызовы,ini_get('default_encoding')
а также все другие вхождения в инфраструктуру Zend ...источник
В PHP 5.6 устарели некоторые функции, особенно те, которые использует Zend: http://de1.php.net/manual/en/migration56.deprecated.php#migration56.deprecated.iconv-mbstring-encoding
Если я правильно понимаю, вам просто нужно установить default_encoding , тогда вызов метода больше не нужен.
источник
Вы можете запустить этот скрипт оболочки из корневого каталога Magento, чтобы избавиться от этого сообщения, если вы работаете в OSX: https://gist.github.com/jayelkaake/34109641e5489e3e7e30
Обратите внимание, что это изменит некоторые файлы в вашей папке lib /, поэтому любые обновления в Magento будут перезаписывать их (хотя я действительно надеюсь, что Magento исправит ошибку и добавит официальную совместимость с PHP 5.6.9 в их следующей версии).
источник
Для меня системная кодировка php.ini уже была установлена в UTF-8, поэтому в lib / Zend / Locale / Format.php я добавил:
И то же самое в lib / Zend / Validate / Hostname.php
В вашем файле php.ini убедитесь, что значение
default_charset="UTF-8"
даже в Windows.источник
Это помогло мне:
Создайте следующие папки:
Скопируйте следующие файлы из / lib / Zend / в / app / code / local / Zend /:
Откройте файлы из / app / code / local / Zend / в текстовом редакторе, найдите «internal_encoding» и замените их на «default_charset». Перед этим убедитесь, что строка «internal_encoding» является параметром функции, связанной с iconv. Не заменяйте «mb_internal_encoding», «$ internal_encoding» или любые другие вещи, не связанные с iconv, потому что это нарушит код.
Источник: https://www.code007.ro/how-to-fix-php-5-6-deprecated-messages-in-magento/
источник
Если вам нужно быстрое исправление, вы можете заменить в строке index.php (около 40):
с:
Это должно «скрыть» уведомления / ошибки об устаревших функциях.
Примечание: это не настоящее исправление, это просто скрытие уведомления / информации об этой проблеме с помощью iconv_set_encoding ()
Работал для меня на Magento 1.8.1.0
источник
просто установите библиотеку php gd, используя соответствующую команду
sudo apt-get install php5.6-gd
изphp5-gd
или скажем для RehHat
sudo yum install php56-gd
илиphp5-gd
и теперь перезапустите Apache, и вы хорошо, как обычно.
источник