Wie andere hatte ich Log-Dateien vollständig aufhören, Daten zu schreiben.
Fehlerquelle - Protokolldateien, die keine Daten schreiben
Darin haben app/Mage.php
sie folgende Änderung vorgenommen:
// 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;
}
Das sucht in der Konfiguration nach einer durch Kommas getrennten Liste der genehmigten Dateierweiterungen. Sie haben diese Liste jedoch NICHT in die Konfiguration aufgenommen - nicht einmal eine Option im Magieradministrator, um dies selbst zu konfigurieren.
Lösung für den Fehler - Protokolldateien, die keine Daten schreiben
Um dies zu lösen, machen Sie einfach einen Eintrag in die Datenbank in der core_config_data
Tabelle.
INSERT INTO core_config_data VALUES ( NULL, 'default', 0, 'dev/log/allowedFileExtensions', 'log,txt,html,csv' );
Leeren Sie auch den Objektcache, und Sie sollten feststellen, dass erneut Daten in die Protokolldateien geschrieben werden.
ls -lrt var/log/ | tail
Zu Referenzzwecken wurde dieses Problem in EE 1.14.2.0 mit allen angewendeten Sicherheitspatches behoben.
Ich habe bei Magento Support ein Ticket zu diesem Thema geöffnet, aber noch keine Antwort von einem Techniker erhalten. Ich bin in der Warteschlange.
Was mich an diesem Fehler wirklich verwirrt, ist, dass Magento bereits eine Methode zur Überprüfung von Protokolldateierweiterungen hat, die Ende 2017 über SUPEE-10415 hinzugefügt wurden.
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;
}
Warum haben sie diese Logik nicht wiederverwendet, anstatt zu versuchen, das Holzrad unvollständig neu zu erfinden?