เช่นเดียวกับคนอื่น ๆ ฉันมีไฟล์บันทึกอย่างสมบูรณ์หยุดเขียนข้อมูล
แหล่งที่มาของข้อผิดพลาด - ไฟล์บันทึกไม่ได้เขียนข้อมูล
ใน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
สำหรับการอ้างอิงปัญหานี้เกิดขึ้นกับ EE 1.14.2.0 โดยมีการใช้โปรแกรมแก้ไขเพื่อความปลอดภัยทั้งหมด
ฉันเปิดตั๋วพร้อมการสนับสนุน Magento ในประเด็นนี้ แต่ยังไม่ได้รับการตอบกลับจากช่างเทคนิค ฉันอยู่ในคิว
สิ่งที่ทำให้ฉันสับสนเกี่ยวกับข้อผิดพลาดนี้คือ Magento มีวิธีการตรวจสอบความถูกต้องของนามสกุลไฟล์บันทึกที่เพิ่มผ่าน SUPEE-10415 ในปลายปี 2560
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;
}
เหตุใดพวกเขาจึงไม่ใช้ตรรกะนั้นซ้ำแทนที่จะพยายามล็อกล้อข้อมูลที่ไม่สมบูรณ์ใหม่