Mage :: लॉग () नए Magento अपडेट पर काम नहीं कर रहा है (1.9.4.1)


23

इस नए अपडेट (1.9.4.1) के बाद, Mage :: log () काम नहीं कर रहा है। जाहिर है, यह Zend_Validate_File_ExtensionMage.php पर लाइन 819 के साथ कुछ करना है , जहां यह जाँचता है कि क्या फ़ाइल is_readable()इससे पहले भी मौजूद है। मैंने पूरी log()विधि को इसके पिछले संस्करण में उलट दिया और यह फिर से काम कर रहा है।

मुख्य चैनल क्या है कि मैं इस मुद्दे की रिपोर्ट करने के लिए मैगेंटो टीम से संपर्क कर सकता हूं?


1
@PiotrSiejczuk जो नई लॉग फ़ाइलों के लिए काम नहीं करता है। आपकी दूसरी टिप्पणी का अर्थ है कि लॉग रोटेशन कॉन्फ़िगरेशन को बदलने की क्षमता यह एक गंभीर मुद्दा नहीं है और मैं पूरी तरह से असहमत हूं। आपकी पहली टिप्पणी का तात्पर्य यह है कि यह शायद केवल ओपी के लिए एक समस्या है, या किसी प्रकार के किनारे के मामले में, और मैं इससे बहुत असहमत हूं। मैं पूरी तरह से समझता हूं कि मैगेंटो ने इस बग पर ध्यान क्यों नहीं दिया होगा, लेकिन ये निहितार्थ यहां क्या जरूरत है (चाहे वे जानबूझकर हैं या नहीं) के विपरीत हैं।
तून81

3
ऐसी कई स्थितियाँ हैं जहाँ यह समस्याग्रस्त है: क्लीन इनस्टॉल (इस मामले में system.log अभी तक मौजूद नहीं है), स्थानीय और तृतीय-पक्ष मॉड्यूल का निर्माण / स्थापना जो कस्टम लॉग फ़ाइलों में लॉग इन करते हैं, लॉगरेट कॉन्फ़िगरेशन जो स्पष्ट रूप से नहीं बनाते हैं / मूल लॉग फ़ाइल रखें।
Aad Mathijssen

3
हाँ, लॉगिंग हर सॉफ्टवेयर के लिए आवश्यक है, मुझे आश्चर्य है कि उन्होंने ऐसा क्यों होने दिया। मेरा सपना है कि जब 2020 आता है और Magento टीम रोक 1.x का समर्थन करते हुए वे एक अधिकारी Git तो रपो अपने पिछले संस्करण अपलोड कि समुदाय के लिए तारीख तक यह रख सकते है
rodrigoriome

1
@cslogic "मेरा सपना है कि जब 2020 आये और Magento टीम 1.x का समर्थन करना बंद कर दे, तो वे अपना अंतिम संस्करण एक आधिकारिक Git रेपो में अपलोड करते हैं ताकि समुदाय इसे अद्यतित रख सके" => पहले से ही OpenMage LTS के साथ किया गया था । com / OpenMage / magento-lts
Frédéric MARTINEZ

1
@ FrédéricMARTINEZ अजीब बात है, बेन मार्क्स ने वास्तव में मुझे उस रेपो के बारे में 30 मिनट पहले बताया था जब तक आप टिप्पणी नहीं पढ़ते हैं .. धन्यवाद वैसे भी, इस पर एक नज़र
डालेंगे

जवाबों:


7

आधिकारिक पैच इनकमिंग :) अभी भी आधिकारिक पैच की प्रतीक्षा में ... :(

piotrekkaminski ने 13 घंटे पहले टिप्पणी की थी

यह वर्तमान आधिकारिक पैच है जिसे पहले के संस्करणों में पोर्ट किया जाएगा (यह नवीनतम पर काम करना चाहिए) https://gist.github.com/piotrekk विटामिनki/0596cae2d25bf467edbd3d3f03abbf8ff

स्रोत: https://github.com/OpenMage/magento-lts/pull/648#issuecomment-480941871


7

मैं अब तक मिली सभी चीज़ों को संक्षेप में बताऊंगा जो कि सुपरनेट -११० SUP६ के साथ पैचिंग के संबंध में मैगेंटो के समर्थन और स्लैक दोनों के साथ अनुसंधान और बातचीत पर आधारित है। क्या किया जा सकता है:

अद्यतन 2: इस समस्या का समाधान अगले PATCH SUPEE-11155 - https://magento.com/security/patches/supee-11155 में किया जाता है । संभव मुद्दों के लिए पैच चेक को लागू करने से पहले हमेशा की तरह - सुरक्षा पैच SUPEE-11155 - संभावित मुद्दे? धन्यवाद महान टिप्पणी के लिए Aad Mathijssen को जाता है ।

अद्यतन: ईई संस्करण की मांग पर एक आधिकारिक पैच उपलब्ध है। असल में, यह पिओट कमिंसकी की पत्रिका मैगेंटो पैच फ़ाइल के रूप में लिपटा हुआ है।

  1. app/Mage.phpपैच फ़ाइल के लिए परिवर्तन हटाएं । मैंने अब तक यही किया है।
    पेशेवरों - लॉगिंग पहले की तरह काम करता है।
    विपक्ष - एक पैच फ़ाइल को संपादित करना, लॉगिंग एक संभावित शोषण से असुरक्षित है (लेकिन यह बहुत कम जोखिम होना चाहिए)। जब मैगेंटो एक आधिकारिक फिक्स जारी करता है तो आपको इसे वापस करना होगा और मूल अनएडिटेड पैच लागू करना होगा।
  2. Piotr Kaminski के gist के आधार पर शीर्ष पर एक और पैच जोड़ें - https://gist.github.com/piotrekkaminski/0596cae2d25bf467edbd3d3f03ab9f8f । पिओटर कमिंसकी सुरक्षा के प्रभारी मैगनेटो का हिस्सा है, इसलिए यह सीधे घोड़े के मुंह से आता है। गिस्ट को मैगेंटो स्लैक में साझा किया गया था और संभवत: सुपरईई -11086 v1.1 के रूप में समाप्त होगा।
    पेशेवरों - यह मैगेंटो तरीका है
    विपक्ष - आपको आधिकारिक बनने के लिए इसके लिए इंतजार करना होगा, या जिम्मेदारी लेनी होगी और इसे अपने आप को पैच के रूप में पैकेज करना होगा, जो एक आधिकारिक पैच अप होने के बाद आपको वापस लाने के लिए वापस लाएगा।
    उन परिवर्तनों के साथ मूल एक को संपादित करने के लिए दो पैच जोड़ने के बजाय थोड़ी भिन्नता होगी।
  3. Zend_Validate_File_Extension::isValidफ़ाइल अस्तित्व सत्यापन संपादित करें और निकालें। Magento LTS github में एक लंबी चर्चा है - https://github.com/OpenMage/magento-lts/pull/648isValidविधि बातें ऐसा करने की उम्मीद नहीं कर रहा है करता है, तो कुछ सदस्यों इसे ठीक करने का प्रस्ताव। मेरी राय है कि यह एक अच्छा समाधान नहीं है, हां कोड खराब है, लेकिन यह हमेशा के लिए था और कस्टम मॉड्यूल / कोड में उपयोग किया जा सकता है। इसके विपरीत, सबसे खराब जो हो सकता है वह यह है कि फ़ाइलों की जाँच अस्तित्व के लिए नहीं की जाती है।
    पेशेवरों - बल्कि एक साधारण फिक्स
    विपक्ष - एक पुस्तकालय फ़ाइल को बदलता है और इसकी कार्यक्षमता में संशोधन करता है।
    आप इसे या तो कस्टम पैच के रूप में लागू कर सकते हैं या localकोड पूल में पूरी कक्षा को फिर से लिख सकते हैं ।

मैंने पैच को संपादित करने के लिए चुना, और जब v1.1 आता है तो मैं संपादित पैच को वापस लाऊंगा, और मूल संस्करण लागू करूंगा और उसके बाद ठीक करूंगा। यह हमारी निर्माण प्रक्रिया और आंतरिक नीति के अनुकूल है, यह आपके लिए अलग हो सकता है। इससे कोई फर्क नहीं पड़ता कि आपने इस पैच को बाद में लागू करने के लिए जल्द ही चुना है।


1
25 जून तक, Magento ने SUPEE-11155, Magento वाणिज्य 1.14.4.2 और Magento Open Source 1.9.4.2 जारी किया है, जिसमें इस मुद्दे के लिए एक समाधान शामिल है। अनिवार्य रूप से, पायोत्र कमिंसकी द्वारा पैच को शामिल किया गया है।
एड मैथिजसेन

4

सामुदायिक इनपुट से कुछ। नीचे एक नया Validator Zend_Validate_File_Extension उपयोग किया जाता है:

https://github.com/brentwpeterson/magento-patches/blob/master/CE1.9/PATCH_SUPEE-11086_CE_1.9.4.0_v1-2019-03-26-03-05-04.sh#L183

"समाधान पैच को संपादित कर रहा है और बस ऐप / मेसेज से परिवर्तनों को हटा रहा है। मैं इस अभ्यास को दृढ़ता से हतोत्साहित करूंगा, लेकिन स्थिति महत्वपूर्ण है"।


यह वास्तव में एक बुरा अभ्यास है, लेकिन मैं बिना लॉग इन किए जीवित नहीं रह सकता। आशा है कि Adobe इसे जल्द ही ठीक कर सकता है
rodrigoriome

हाँ, मुझे सभी लॉग फ़ाइलों को फिर से बनाना पड़ा क्योंकि लॉगट्रॉटर स्क्रिप्ट फ़ाइलों को हटा रही थी और उनमें से ज़िप बना रही थी। मैं Magento के एक बेहतर स्क्रिप्ट को खोजने के लिए की जरूरत नहीं होगी।
काल्विन कालिन

1
@KalvinKlien: क्या आपने इसके साथ प्रयास किया: लॉगट्रेट का सहसंयोजक विकल्प? "पुरानी लॉग फ़ाइल को कॉपी करने के बाद, पुरानी लॉग फ़ाइल को स्थानांतरित करने और वैकल्पिक रूप से एक नया बनाने के बजाय मूल लॉग फ़ाइल को ट्रंकुकेट करें। इसका उपयोग तब किया जा सकता है जब कुछ प्रोग्राम को अपने लॉगफाइल को बंद करने के लिए नहीं कहा जा सकता है और इस प्रकार लेखन जारी रह सकता है () हमेशा के लिए पिछली लॉग फ़ाइल में अपील करना) ध्यान दें कि फ़ाइल की प्रतिलिपि बनाने और उसे काट-छाँट करने के बीच एक बहुत छोटा सा समय टुकड़ा है, इसलिए कुछ लॉगिंग डेटा खो सकता है। जब इस विकल्प का उपयोग किया जाता है, तो बनाने के विकल्प का कोई प्रभाव नहीं होगा, जैसा कि। पुरानी लॉग फ़ाइल जगह में है "।
पिओटर सीजकुक

धन्यवाद @PiotrSiejczuk! मैंने इसका उपयोग किया: / पथ / var / लॉग / * लॉग {रोटेट 7 कोपाइटरनेट रोजाना सेक गुम अनुपोक notifempty}
काल्विन क्लेन

1

मेरा अस्थायी समाधान कोड के इस भाग को विधि से कॉपी lib/Zend/Validate/File/Extension.phpकरना app/code/local/Zend/Validate/File/Extension.phpऔर निकालना था isValid():

    // Is file readable ?
    #require_once 'Zend/Loader.php';
    if (!Zend_Loader::isReadable($value)) {
        return $this->_throw($file, self::NOT_FOUND);
    }

यह बन जाएगा ...

public function isValid($value, $file = null)
{
    if ($file !== null) {
        $info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1);
    } else {
        $info = pathinfo($value);
...

जब Magento 1.9.4.2 जारी किया जाता है तो मैं फिर से जांच करता हूं।

वास्तव में, फ़ाइल पठनीय नहीं है, या मौजूद नहीं है, इसका मतलब यह नहीं है कि फ़ाइल नाम मान्य नहीं है, है ना?


1

मेरा सुझाव है कि कोर कोड में बदलाव न करें और इस तरह के अपडेट का उपयोग करें ( https://gist.github.com/mehdichaouch/99c67298b5a65f81219c9b69942b6fe7 )

$installer->run("
    INSERT INTO `{$installer->getTable('core_config_data')}` (scope, scope_id, path, value)
    VALUES ('default', 0, 'dev/log/allowedFileExtensions', 'log,txt,html,csv')
    ON DUPLICATE KEY UPDATE value = 'log,txt,html,csv';
");

0

एक और मुद्दा है (जो मैगेंटो टीम से जानबूझकर हो सकता है) जो सबफ़ोल्डर्स के अंदर लॉग फाइल लिखने की क्षमता को रोकता है। उदाहरण के लिए:

Mage::log('Some log information', Zend_Log::DEBUG, 'somefolder/anotherfolder/somelogfile.log', true);

पहले के संस्करणों में, उस कॉल ने स्थान पर एक फ़ाइल बनाई होगी:

/your-magento-app-root-folder/var/log/somefolder/anotherfolder/somelogfile.log

लेकिन चूंकि विधि basename()में एक फ़ंक्शन कॉल है Mage::log(), फ़ाइल पर लिखा है:

/your-magento-app-root-folder/var/log/somelogfile.log

यहाँ app/Mage.phpनिम्न कोड है :

$file = empty($file) ?
    (string) self::getConfig()->getNode('dev/log/file', Mage_Core_Model_Store::DEFAULT_CODE) : basename($file);

यहां तक ​​कि अगर यह विशेष रूप से 1.9.4.1 से संबंधित नहीं है, तो मुद्दा हाल ही में (नवीनतम 1.9.3.x संस्करणों के आसपास) होना शुरू हुआ और जब आप एक ही नाम के साथ कभी-कभी बहुत सारी लॉग फ़ाइलों से निपटना पड़ता है, तो बहुत गुस्सा आता है। लेकिन शुरू में अलग-अलग सबफ़ोल्डर्स में)।

जैसा कि कोड के उस टुकड़े को शायद Magento टीम से जानबूझकर किया गया है, मुझे लगता है कि इसे आगे जारी करने के लिए इसे ठीक करने की कोई योजना नहीं है, जो प्रारंभिक व्यवहार को पुनर्स्थापित करने के लिए इसे हैक करने का मतलब है ...


उस सबफ़ोल्डर समस्या के लिए मेरे पास कोई सुराग नहीं है, लेकिन वास्तविक लॉगिंग समस्या के लिए हम कोड के उस हिस्से के लिए खड़े हैं। gith.github.com/piotrekkaminski/…
rodrigoriome
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.