दूसरों की तरह, मेरे पास लॉग फ़ाइलें पूरी तरह से डेटा लिखना बंद कर देती हैं।
बग का स्रोत - लॉग फ़ाइल डेटा लेखन नहीं है
में app/Mage.php
वे यह बदलाव किया है:
// Validate file extension before save. Allowed file extensions: log, txt, html, csv
- if (!self::helper('log')->isLogFileExtensionValid($file)) {
+ $_allowedFileExtensions = explode(
+ ',',
+ (string) self::getConfig()->getNode('dev/log/allowedFileExtensions', Mage_Core_Model_Store::DEFAULT_CODE)
+ );
+ $logValidator = new Zend_Validate_File_Extension($_allowedFileExtensions);
+ $logDir = self::getBaseDir('var') . DS . 'log';
+ if (!$logValidator->isValid($logDir . DS . $file)) {
return;
}
जो स्वीकृत फ़ाइल एक्सटेंशन की अल्पविराम से अलग की गई सूची के लिए विन्यास को देख रहा है। हालांकि उन्होंने इस सूची को विन्यास में नहीं जोड़ा था - हमारे लिए इसे स्वयं कॉन्फ़िगर करने के लिए Mage Admin में एक विकल्प भी नहीं।
बग का समाधान - लॉग फ़ाइल डेटा लेखन नहीं
इसे हल करने के लिए, बस core_config_data
तालिका में डेटाबेस में एक प्रविष्टि करें ।
INSERT INTO core_config_data VALUES ( NULL, 'default', 0, 'dev/log/allowedFileExtensions', 'log,txt,html,csv' );
वस्तुओं को कैश के रूप में अच्छी तरह से साफ़ करें और आपको एक बार फिर लॉग फ़ाइलों में डेटा लेखन देखना चाहिए।
ls -lrt var/log/ | tail
संदर्भ के लिए, यह मुद्दा ईई 1.14.2.0 पर था जिसमें सभी सुरक्षा पैच लगाए गए थे।
मैंने इस मुद्दे पर Magento के समर्थन के साथ एक टिकट खोला लेकिन अभी तक किसी तकनीशियन से प्रतिक्रिया नहीं मिली है। मैं कतार में हूं।
इस बग के बारे में मुझे वास्तव में भ्रमित करता है कि मैगेंटो के पास लॉग फ़ाइल एक्सटेंशन को मान्य करने के लिए पहले से ही एक विधि है जिसे उन्होंने 2017 के अंत में SUPEE-10415 के माध्यम से जोड़ा था।
app/code/core/Mage/Log/Helper/Data.php
/**
* Checking if file extensions is allowed. If passed then return true.
*
* @param $file
* @return bool
*/
public function isLogFileExtensionValid($file)
{
$result = false;
$validatedFileExtension = pathinfo($file, PATHINFO_EXTENSION);
if ($validatedFileExtension && in_array($validatedFileExtension, $this->_allowedFileExtensions)) {
$result = true;
}
return $result;
}
उन्होंने उस तर्क का पुन: उपयोग क्यों नहीं किया, जो लॉग व्हील के अधूरे पुन: आविष्कार का प्रयास करता है?