他の人と同様に、ログファイルはデータの書き込みを完全に停止しました。
バグの原因-データを書き込まないログファイル
で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;
}
ログホイールの不完全な再発明を試みる代わりに、なぜそのロジックを再利用しなかったのですか?