Nach diesem neuen Update (1.9.4.1) funktioniert Mage :: log () nicht mehr. Anscheinend hat es etwas mit Zend_Validate_File_Extension
Zeile 819 bei Mage.php zu tun, wo es prüft, ob die Datei, is_readable()
bevor sie überhaupt existiert. Ich habe die gesamte log()
Methode auf die vorherige Version zurückgesetzt und sie funktioniert wieder.
Über welchen Hauptkanal kann ich mich an das Magento-Team wenden, um dieses Problem zu melden?
magento-1.9
log
bug
magento-1.9.4.1
rodrigoriome
quelle
quelle
Antworten:
Offizieller Patch eingetroffen :)Ich warte noch auf den offiziellen Patch ... :(Quelle: https://github.com/OpenMage/magento-lts/pull/648#issuecomment-480941871
quelle
Ich werde alles zusammenfassen, was ich bisher aufgrund von Recherchen und Interaktionen mit Magento, sowohl Support als auch Slack in Bezug auf das Patchen mit SUPEE-11086 gefunden habe. Was kann getan werden:
UPDATE 2: Das Problem wird im nächsten PATCH SUPEE-11155 behoben - https://magento.com/security/patches/supee-11155 . Wie immer, bevor Sie den Patch anwenden, überprüfen Sie den Thread auf mögliche Probleme. - Sicherheitspatch SUPEE-11155 - Mögliche Probleme? Vielen Dank an Aad Mathijssen für den tollen Kommentar.
Update: Ein offizieller Patch für die EE-Version ist auf Anfrage erhältlich. Grundsätzlich ist es Piotr Kaminskis Kern als Magento-Patchdatei verpackt.
app/Mage.php
in der Patch-Datei. Das habe ich bisher getan.Die Protokollierung funktioniert wie bisher.
Bei der Bearbeitung einer Patch-Datei ist die Protokollierung nicht vor einem möglichen Exploit geschützt (dies sollte jedoch ein sehr geringes Risiko darstellen). Wenn Magento ein offizielles Update veröffentlicht, müssen Sie es zurücksetzen und den ursprünglichen, unbearbeiteten Patch anwenden.
Vorteile - Dies ist der Weg von Magento
Nachteile - Sie müssen warten, bis dies offiziell wird, oder Sie übernehmen die Verantwortung und packen es selbst als Patch, wodurch Sie wieder zurückkehren müssen, sobald ein offizieller Patch verfügbar ist.
Eine leichte Variation wäre, anstatt zwei Patches hinzuzufügen, um das Original mit diesen Änderungen zu bearbeiten.
Zend_Validate_File_Extension::isValid
und Entfernen der Überprüfung des Vorhandenseins von Dateien. In Magento LTS github gibt es eine lange Diskussion - https://github.com/OpenMage/magento-lts/pull/648 . DieisValid
Methode führt Dinge aus, die nicht erwartet werden. Einige Mitglieder schlagen daher vor, sie zu beheben. Meine Meinung ist, dass dies keine gute Lösung ist, ja Code ist schlecht, aber es war für immer da und kann in benutzerdefinierten Modulen / Code verwendet werden. Im Gegenteil, das Schlimmste, was passieren kann, ist, dass Dateien nicht auf Existenz überprüft werden.Vorteile - eine ziemlich einfache Lösung
Nachteile - ändert eine Bibliotheksdatei und ändert ihre Funktionalität.
Sie können dies entweder als benutzerdefinierten Patch oder durch Umschreiben der gesamten Klasse im Codepool anwenden
local
.Ich habe mich entschieden, den Patch zu bearbeiten, und wenn eine v1.1 kommt, werde ich den bearbeiteten Patch zurücksetzen und die Originalversion und danach den Fix anwenden. Dies passt gut zu unserem Erstellungsprozess und unseren internen Richtlinien. Es könnte für Sie anders sein. Egal, für was Sie sich entschieden haben, es ist besser, diesen Patch früher als später anzuwenden.
quelle
Etwas von Community Inputs. Es gibt einen neuen Validator, der Zend_Validate_File_Extension wie folgt verwendet:
https://github.com/brentwpeterson/magento-patches/blob/master/CE1.9/PATCH_SUPEE-11086_CE_1.9.4.0_v1-2019-03-26-03-05-04.sh#L183
"Die Lösung besteht darin, den Patch zu bearbeiten und nur die Änderungen aus app / Mage.php zu entfernen. Ich würde von dieser Vorgehensweise dringend abraten, aber die Situation ist kritisch."
quelle
Meine vorübergehende Lösung bestand darin , diesen Teil des Codes zu kopieren und aus der Methode
lib/Zend/Validate/File/Extension.php
zu entfernen :app/code/local/Zend/Validate/File/Extension.php
isValid()
Es würde ...
Wenn Magento 1.9.4.2 veröffentlicht wird, überprüfe ich das noch einmal.
Tatsächlich bedeutet die Tatsache, dass die Datei nicht lesbar ist oder nicht existiert, nicht, dass der Dateiname ungültig ist, oder?
quelle
Ich empfehle, den Core-Code nicht zu ändern und ein Update wie dieses zu verwenden ( https://gist.github.com/mehdichaouch/99c67298b5a65f81219c9b69942b6fe7 )
quelle
Es gibt ein anderes Problem (das möglicherweise vom Magento-Team beabsichtigt ist), das das Schreiben von Protokolldateien in Unterordnern verhindert. Beispielsweise:
In früheren Versionen hätte dieser Aufruf eine Datei am Speicherort erstellt:
/your-magento-app-root-folder/var/log/somefolder/anotherfolder/somelogfile.log
Da es jedoch einen
basename()
Funktionsaufruf inMage::log()
method gibt, wird die Datei geschrieben unter:/your-magento-app-root-folder/var/log/somelogfile.log
.Hier ist der belastete Code in
app/Mage.php
:Auch wenn es sich nicht speziell um 1.9.4.1 handelt, trat das Problem in letzter Zeit auf (etwa in der neuesten Version 1.9.3.x) und ist sehr ärgerlich, wenn Sie mit vielen Protokolldateien, manchmal mit demselben Namen, arbeiten müssen ( aber zunächst in verschiedenen Unterordnern).
Da dieser Teil des Codes wahrscheinlich vom Magento-Team beabsichtigt ist, gibt es meines Erachtens keinen Plan, ihn in einer weiteren Version zu beheben, was impliziert, ihn zu hacken, um das ursprüngliche Verhalten wiederherzustellen ...
quelle