和其他人一样,我的日志文件完全停止写入数据。
错误的来源-日志文件未写入数据
在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已经拥有一种方法来验证他们在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;
}
他们为什么不重用这种逻辑,而不是尝试对日志轮进行不完全的重新发明?