Magento 1.9, php 5.6 - iconv.internal_encoding का उपयोग पदावनत है


43

Magento CE 1.8 और 1.9 के साथ भी ऐसा ही करें

अपने वीपीएस पर 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) में सुझाए गए बदलावों को ठीक से पढ़ा लेकिन मैं नहीं चाहता कि मैजिक कोर फ़ाइलों के लिए किसी भी हैक का उपयोग करें।

फ्रंटएंड और बैकएंड में मुझे एन्कोडिंग के साथ कोई समस्या नहीं दिखती है - सब ठीक लग रहा है (मेरे पास रूसी स्थानीयकरण हैं - फ्रंटेंड और एडमिन पैनल)।

मैं इस ERR को system.log में अनदेखा कर सकता हूं या नहीं? इस त्रुटि को ठीक करने का सही तरीका क्या है?


इसे 1.9.2+ में संबोधित किया जाना चाहिए, जहां पीएचपी संस्करण 5.6 और इसके बाद के संस्करण के लिए विभिन्न लीब / ज़ेड फाइलें परीक्षण करती हैं।
फ़ास्को लैब्स

जवाबों:


16

मुझे नहीं लगता कि आप php 5.6 के साथ अभी तक Magento का उपयोग करने वाले हैं।
मुझे लगता है कि जब मैगेंटो php 5.6 और यदि आवश्यक हो तो एक ऑफिकल पैच का समर्थन करेगा जब एक आधिकारिक बयान होगा।


6
चूंकि यह स्वीकृत उत्तर है, मैंने सोचा कि मैं इंगित करूंगा कि नीचे से एलेक्स ( magento.stackexchange.com/a/82410/2142 ) के उत्तर ने मुझे एक Magento EE 1.13.1 साइट को पैच करने में मदद की, उन त्रुटियों का उपयोग न करने के लिए PHP 5.6
एरिक हेन्सन

53

आप निम्नलिखित पैच का उपयोग कर सकते हैं:

यह पूर्ण गीथुब-जिस्ट से है:

Magento में Zend फ्रेमवर्क 1 के लिए Bugfix (> = 1.7 ) + PHP 5.6

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


15
एक आकर्षण की तरह काम करते हुए, फ़ाइल को Magento रूट में सेव करें और इस कमांड कुडोसpatch -p1 < 0001-BUGIFX-Magento-Zend-Framework-1-PHP5.6.patch को @ mautz-et-tong
run.graziano

मैंने "p1" पैरामीटर को याद किया - इसके लिए धन्यवाद
cljk

मैंने इसे सफलतापूर्वक चलाया, लेकिन त्रुटि बनी रहती है।
ol'bob dole

1
@ ol'bobdole कौन सी त्रुटि? क्या आपने संकलन का उपयोग किया? आपको फिर से संकलन करने की आवश्यकता हो सकती है।
एलेक्स

@ अच्छा मुद्दा! मेरा मानना ​​है कि यह है।
ओल'बो डब

17

आपको संबंधित कॉल को बदलने lib/Zend/Validate/Hostname.phpऔर Zend फ्रेमवर्क में अन्य सभी घटनाओं के internal_encodingसाथ बदलने की आवश्यकता है ini_get('default_encoding')...


यह मेरे लिए बहुत उपयोगी हो जाता है - जब मैं पुराने 1.4.0.1 संस्करण को कभी भी संस्करण के लिए माइग्रेशन के लिए dev सर्वर पर स्थापित करने का प्रयास करता हूं। धन्यवाद!
एंड्री गोंचर

समस्या खुद Magento + PHP 5.6 नहीं है, लेकिन Zend फ्रेमवर्क जो Magento + PHP 5.6
Nils Preu14

4
यहाँ कमांडलाइन पर एक आसान प्रतिस्थापन के लिए एक जिस्ट है। gith.github.com/nhp/326c2b03b2e88ff48d20
Nils Preuß

5

PHP 5.6 कुछ कार्यों को चित्रित करता है, विशेष रूप से एक Zend का उपयोग कर रहा है: http://de1.php.net/manual/en/migration56.deprecated.php#migration56.deprecated.iconv-mbringring-encoding

यदि मैं इसे सही ढंग से समझता हूं, तो आपको बस default_encoding सेट करना होगा , फिर विधि की कॉल की आवश्यकता नहीं है।


1
हां, मुझे "UTF-8" पर default_encoding सेट करने की कोशिश की गई थी और php.ini में सभी 3 स्ट्रिंग्स (iconv। *) पर टिप्पणी की गई थी लेकिन यह त्रुटि अभी भी मौजूद है। लगता है कि वापस 5.5.16 php की जरूरत है और Magento समर्थन php 5.6 (Marius के सुझाव के अनुसार) की प्रतीक्षा करें। धन्यवाद।
एंड्री गोंचर

1

यदि आप OSX चला रहे हैं तो इस संदेश से छुटकारा पाने के लिए आप अपनी मैगेंटो रूट निर्देशिका से इस शेल स्क्रिप्ट को चला सकते हैं: https://gist.github.com/jayelkaake/34109641e5489e3e7e30

ध्यान दें कि यह आपके lib / फ़ोल्डर में कुछ फ़ाइलों को संशोधित करेगा, इसलिए Magento के लिए कोई भी अपडेट उन्हें अधिलेखित कर देगा (हालांकि मुझे वास्तव में उम्मीद है कि Magento बग को ठीक करता है और अपने अगले संस्करण में आधिकारिक PHP 5.6.9 संगतता जोड़ता है)।


किस Magento के संस्करण के लिए आपने यह कोशिश की? मेरे लिए काम नहीं लगता है।
एलेक्स

v1.9 - यह केवल OSX पर काम करता है। यह एक गैर-OSX यूनिक्स मशीनों के लिए काम करना चाहिए।
जे एल-काक

मुझे लगता है कि इसे मेरे रिप्ले से जुड़े पैच से ज्यादा रिप्लेस होना चाहिए।
एलेक्स

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', $enc);

और वही चीज़ जो lib / Zend / Validate / Hostname.php में है

आप php.ini फ़ाइल में, सुनिश्चित करें कि default_charset="UTF-8"विंडोज पर भी मूल्य ।


1

इससे मुझे मदद मिली:

  1. निम्नलिखित फ़ोल्डर बनाएँ:

    • / ऐप्स / कोड / स्थानीय / Zend / लोकेल
    • / ऐप्स / कोड / स्थानीय / Zend / सेवा
    • / ऐप्स / कोड / स्थानीय / Zend / मान्य
    • / ऐप्स / कोड / स्थानीय / Zend / XMLRPC
  2. निम्नलिखित फाइलों को / lib / Zend / to / app / code / local / Zend /: से कॉपी करें

    • लोकेल / Format.php
    • सेवा / Audioscrobbler.php
    • सेवा / Technorati.php
    • मान्य / Hostname.php
    • मान्य / StringLength.php
    • Xmlrpc / Client.php
  3. एक पाठ संपादक में / ऐप / कोड / स्थानीय / Zend / से फ़ाइलें खोलें और "internal_encoding" खोजें और उन्हें "default_charset" से बदलें। ऐसा करने से पहले, सुनिश्चित करें कि "internal_encoding" स्ट्रिंग एक iconv संबंधित फ़ंक्शन का एक पैरामीटर है। "Mb_internal_encoding", "$ internal_encoding" या किसी भी अन्य गैर-आइकन से संबंधित सामान को प्रतिस्थापित न करें, क्योंकि यह कोड को तोड़ देगा।

स्रोत: 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-gd का php5-gd

या रेहमत के लिए कहें

sudo yum install php56-gd या php5-gd

और अब अपाचे को फिर से शुरू करें और आप हमेशा की तरह साथ जाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.