Magento 1.9, php 5.6-iconv.internal_encoding 사용이 권장되지 않습니다


43

Magento CE 1.8 및 1.9와 동일

내 VPS에서 php를 5.5.16에서 5.6.0으로 업데이트 한 후 [magento] /var/log/system.log에이 2 개의 오류가 발생했습니다.

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.ini에서 각 변경 후 php-fpm 서비스가 다시 시작되었습니다. ).

여기 https://github.com/zendframework/zf1/pull/347/files#r14075423 이 줄 (313 및 474)에서 제안 된 변경 사항을 정확하게 읽었지만 Magento Core 파일에 대한 해킹을 사용하고 싶지 않습니다.

프론트 엔드와 백엔드에서는 인코딩에 문제가 없습니다. 모두 괜찮습니다 (러시아어 현지화가 있습니다-프론트 엔드 및 관리자 패널).

system.log에서이 ERR을 무시할 수 있습니까? 이 오류를 해결하는 올바른 방법은 무엇입니까?


이 문제는 1.9.2 이상에서 해결되어야하며, 다양한 lib / Zend 파일이 새로운 방법을 사용하기 위해 PHP 버전 5.6 이상을 테스트합니다.
Fiasco Labs

답변:


16

아직 PHP 5.6과 함께 Magento를 사용해야한다고 생각하지 않습니다.
나는 마 젠토가 PHP 5.6을 지원할 때 공식적인 진술이 필요하고 필요한 경우 공식 패치가 있다고 가정합니다.


6
이것이 허용되는 답변이므로 아래 Alex의 답변 ( magento.stackexchange.com/a/82410/2142 )이 Magento EE 1.13.1 사이트를 패치하여 사용할 때 이러한 오류가 발생하지 않도록하는 데 도움이 되었다고 지적했습니다 PHP 5.6
Erik Hansen

52

다음 패치를 사용할 수 있습니다 :

전체 Github-Gist에서 가져온 것입니다.

마젠 토의 젠드 프레임 워크 1 버그 수정 (> = 1.7 .. ) + PHP 5.6

https://gist.github.com/renttek/29beaaa1e90909639501


15
마 젠토 루트에 파일 저장, 마법처럼 일했다,이 명령 실행 patch -p1 < 0001-BUGIFX-Magento-Zend-Framework-1-PHP5.6.patch에 명성을 @ mautz - 등 - 통
nick.graziano

"p1"매개 변수를 놓쳤습니다. 감사합니다
cljk

이것을 성공적으로 실행했지만 오류가 지속됩니다.
ol'bob dole

1
@ ol'bobdole 어떤 오류? 편집을 사용 했습니까? 다시 컴파일해야 할 수도 있습니다.
Alex

@ 알렉스 좋은 지적! 나는 이것이 믿습니다.
ol'bob dole

17

Zend 프레임 워크에서 관련 호출과 다른 모든 발생 을 변경 lib/Zend/Validate/Hostname.php하고 바꿔야합니다 .internal_encodingini_get('default_encoding')


이전 1.4.0.1 버전을 서버에 설치하여 절대 버전으로 마이그레이션하지 않을 때 이것은 매우 유용합니다. 감사!
Andriy Gonchar

문제 자체는 Magento + PHP 5.6이 아니라 magento + PHP 5.6과 함께 제공되는 Zend Framework
Nils Preuß

4

5

PHP 5.6은 몇 가지 기능, 젠드가 사용하고, 특히 하나를 사용되지 않는 : http://de1.php.net/manual/en/migration56.deprecated.php#migration56.deprecated.iconv-mbstring-encoding

이것을 올바르게 이해하면 default_encoding 만 설정 하면 메소드 호출이 더 이상 필요하지 않습니다.


1
예, default_encoding을 "UTF-8"로 설정하고 php.ini에서 3 개의 문자열 (iconv. *)을 모두 주석 처리했지만이 오류는 여전히 존재합니다. PHP 5.5.16으로 돌아가서 Magento 지원 PHP 5.6을 기다려야한다고 생각하십시오 (Marius가 제안한대로). 감사.
Andriy Gonchar

1

OSX를 실행중인 경우 Magento 루트 디렉토리에서이 쉘 스크립트를 실행하여이 메시지를 제거 할 수 있습니다. https://gist.github.com/jayelkaake/34109641e5489e3e7e30

lib / 폴더의 일부 파일을 수정하므로 Magento에 대한 모든 업데이트가 파일을 덮어 씁니다 (Magento가 버그를 수정하고 다음 버전에서 공식 PHP 5.6.9 호환성을 추가하기를 바랍니다).


어떤 마 젠토 버전을 사용해 보셨습니까? 나를 위해 작동하지 않는 것 같습니다.
Alex

v1.9-OSX에서만 작동합니다. 이것은 비 OSX 유닉스 머신에서 작동합니다.
Jay El-Kaake

나는 이것이 교체보다 더 필요하다고 생각합니다. 내 답변에 링크 된 패치를 참조하십시오.
Alex

1

나를 위해 php.ini를 인코딩하는 시스템은 이미 UTF-8로 설정되어 있으므로 lib / Zend / Locale / Format.php에서 다음을 추가했습니다.

if ($ oenc! = 'UTF-8') iconv_set_encoding ( 'internal_encoding', 'UTF-8');
....
if ($ oenc! = 'UTF-8') iconv_set_encoding ( 'internal_encoding', $ oenc);

그리고 lib / Zend / Validate / Hostname.php에서 같은 것

php.ini 파일 default_charset="UTF-8"에서 Windows에서도 값을 확인하십시오 .


1

이것은 나를 도왔다 :

  1. 다음 폴더를 작성하십시오.

    • / app / code / local / Zend / Locale
    • / app / code / local / Zend / Service
    • / app / code / local / Zend / Validate
    • / app / code / local / Zend / XmlRpc
  2. 다음 파일을 / lib / Zend /에서 / app / code / local / Zend /로 복사하십시오.

    • 로케일 /Format.php
    • 서비스 /Audioscrobbler.php
    • 서비스 /Technorati.php
    • Validate / Hostname.php
    • Validate / StringLength.php
    • XmlRpc / Client.php
  3. 텍스트 편집기에서 / 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/


-2

빠른 수정이 필요한 경우 index.php 줄에서 교체 할 수 있습니다 (약 40 개).

error_reporting(E_ALL | E_STRICT);

와:

error_reporting((E_ALL | E_STRICT) ^ E_DEPRECATED);

더 이상 사용되지 않는 기능에 대한 알림 / 오류를 "숨 깁니다".

통지 : 이것은 실제 수정이 아니며 iconv_set_encoding () 으로이 문제에 대한 통지 / 정보를 숨기고 있습니다.

Magento 1.8.1.0에서 나를 위해 일했습니다.


-3

관련 명령을 사용하여 PHP gd 라이브러리를 설치하십시오.

sudo apt-get install php5.6-gdphp5-gd

또는 RehHat을 위해 말하십시오

sudo yum install php56-gd 또는 php5-gd

이제 아파치를 다시 시작하면 평소대로 갈 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.