Miej to samo z Magento CE 1.8 i 1.9
Po aktualizacji php z 5.5.16 do 5.6.0 na moim VPS dostałem 2 błędy w [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
Znalazłem te informacje https://github.com/zendframework/zf1/pull/347 Ale wszystkie zmiany w php.ini nie działają dla mnie (oczywiście po każdej zmianie w php.ini zrestartowałem usługę php-fpm ).
Tutaj https://github.com/zendframework/zf1/pull/347/files#r14075423 Przeczytałem sugerowane zmiany dokładnie w tym wierszu (313 i 474), ale nie chcę używać żadnych hacków do plików Magento Core.
W frontend i backend nie widzę żadnych problemów z kodowaniem - wszystko wygląda dobrze (mam rosyjskie lokalizacje - frontend i panel administracyjny).
Czy mogę zignorować ten błąd w pliku system.log, czy nie? Jak właściwie naprawić ten błąd?
źródło
Odpowiedzi:
Nie sądzę, że powinieneś używać Magento z php 5.6.
Zakładam, że będzie oficjalne oświadczenie, kiedy Magento będzie wspierać php 5.6 i oficjalna łatka, jeśli to konieczne.
źródło
Możesz użyć następującej poprawki:
Pochodzi z pełnej Github-Gist:
źródło
patch -p1 < 0001-BUGIFX-Magento-Zend-Framework-1-PHP5.6.patch
kudos na @ mautz-et-tongMusisz zmienić
lib/Zend/Validate/Hostname.php
i zastąpićinternal_encoding
powiązane wywołaniaini_get('default_encoding')
oraz wszystkie inne zdarzenia w Zend Framework ...źródło
PHP 5.6 wycofało się z kilku funkcji, szczególnie tej używanej przez Zend: http://de1.php.net/manual/en/migration56.deprecated.php#migration56.deprecated.iconv-mbstring-encoding
Jeśli dobrze to rozumiem, wystarczy ustawić default_encoding , wtedy wywołanie metody nie jest już potrzebne.
źródło
Możesz uruchomić ten skrypt powłoki z katalogu głównego Magento, aby pozbyć się tej wiadomości, jeśli używasz OSX: https://gist.github.com/jayelkaake/34109641e5489e3e7e30
Zauważ, że zmodyfikuje on niektóre pliki w twoim folderze lib /, więc wszelkie aktualizacje Magento zastąpią je (chociaż mam nadzieję, że Magento naprawi błąd i doda oficjalną kompatybilność z PHP 5.6.9 w następnej wersji).
źródło
Dla mnie system kodujący php.ini był już ustawiony na UTF-8, więc w lib / Zend / Locale / Format.php dodałem:
I to samo w lib / Zend / Validate / Hostname.php
W swoim pliku php.ini upewnij się, że wartość
default_charset="UTF-8"
nawet w systemie Windows.źródło
Pomogło mi to:
Utwórz następujące foldery:
Skopiuj następujące pliki z / lib / Zend / do / app / code / local / Zend /:
Otwórz pliki z / app / code / local / Zend / w edytorze tekstu i wyszukaj „wewnętrzne_kodowanie” i zamień je na „default_charset”. Zanim to zrobisz, upewnij się, że łańcuch „Internal_encoding” jest parametrem funkcji powiązanej z iconv. Nie zastępuj „mb_internal_encoding”, „$ internal_encoding” ani innych rzeczy niezwiązanych z ikoną, ponieważ spowoduje to uszkodzenie kodu.
Źródło: https://www.code007.ro/how-to-fix-php-5-6-deprecated-messages-in-magento/
źródło
Jeśli potrzebujesz szybkiej poprawki, możesz zastąpić wierszem index.php (około 40):
z:
To powinno „ukryć” powiadomienia / błędy dotyczące przestarzałych funkcji.
Uwaga: To nie jest prawdziwa poprawka, to tylko ukrywanie zawiadomienia / informacji o tym problemie za pomocą iconv_set_encoding ()
Pracowałem dla mnie nad Magento 1.8.1.0
źródło
wystarczy zainstalować bibliotekę php gd za pomocą odpowiedniego polecenia
sudo apt-get install php5.6-gd
zphp5-gd
lub powiedz o RehHat
sudo yum install php56-gd
lubphp5-gd
a teraz zrestartuj apache i możesz iść jak zwykle.
źródło