Setelah pembaruan baru ini (1.9.4.1), Mage :: log () tidak berfungsi. Rupanya, itu ada hubungannya dengan Zend_Validate_File_Extension
jalur 819 di Mage.php di mana ia memeriksa apakah file is_readable()
sebelum itu bahkan ada. Saya membalikkan seluruh log()
metode ke versi sebelumnya dan berfungsi lagi.
Apa saluran utama yang dapat saya hubungi tim Magento untuk melaporkan masalah ini?
magento-1.9
log
bug
magento-1.9.4.1
rodrigoriome
sumber
sumber
Jawaban:
Patch resmi masuk :)Masih menunggu patch resmi ... :(Sumber: https://github.com/OpenMage/magento-lts/pull/648#issuecomment-480941871
sumber
Saya akan meringkas semua yang saya temukan sejauh ini berdasarkan penelitian dan interaksi dengan Magento, baik dukungan dan Slack sehubungan dengan menambal dengan SUPEE-11086. Apa yang bisa dilakukan:
UPDATE 2: Masalah ini teratasi dalam PATCH SUPEE-11155 berikutnya - https://magento.com/security/patches/supee-11155 . Seperti biasa sebelum menerapkan pemeriksaan tambalan untuk kemungkinan masalah utas - Security Patch SUPEE-11155 - Kemungkinan masalah? Terima kasih kepada Aad Mathijssen atas komentarnya yang luar biasa.
Pembaruan: Patch resmi tersedia berdasarkan permintaan untuk versi EE. Pada dasarnya, ini adalah Piotr Kaminski yang dibungkus sebagai file patch Magento.
app/Mage.php
dalam file tambalan. Inilah yang telah saya lakukan sejauh ini.Pro - logging berfungsi seperti sebelumnya.
Kontra - mengedit file tambalan, logging tidak terlindungi dari eksploitasi yang mungkin (tapi ini harusnya berisiko sangat rendah). Ketika Magento merilis perbaikan resmi, Anda harus mengembalikannya dan menerapkan Patch asli yang belum diedit.
Pro - Ini adalah cara Magento
Kontra - Anda harus menunggu ini untuk menjadi resmi, atau mengambil tanggung jawab dan mengemasnya sebagai menambal diri Anda sendiri, yang akan membawa Anda kembali untuk harus kembali setelah tambalan resmi selesai.
Variasi sedikit akan bukannya menambahkan dua tambalan untuk mengedit yang asli dengan perubahan itu.
Zend_Validate_File_Extension::isValid
dan hapus validasi keberadaan file. ada diskusi panjang di Magento LTS github - https://github.com/OpenMage/magento-lts/pull/648 . TheisValid
Metode melakukan hal-hal itu tidak diharapkan untuk dilakukan, sehingga beberapa anggota mengusulkan untuk memperbaikinya. Pendapat saya adalah bahwa ini bukan solusi yang baik, ya kode buruk, tapi itu ada di sana selamanya dan dapat digunakan dalam modul / kode kustom. Sebaliknya, hal terburuk yang dapat terjadi adalah file tidak diperiksa keberadaannya.Pro - perbaikan yang agak sederhana
Kontra - mengubah file perpustakaan dan mengubah fungsinya.
Anda bisa menerapkan ini sebagai tambalan khusus atau dengan menulis ulang seluruh kelas dalam
local
kumpulan kode.Saya memilih untuk mengedit tambalan, dan ketika v1.1 datang saya akan mengembalikan tambalan yang diedit, dan menerapkan versi asli dan setelah perbaikan itu. Ini sesuai dengan proses pembuatan dan kebijakan internal kami, mungkin berbeda untuk Anda. Apa pun yang Anda pilih, lebih baik menerapkan tambalan ini lebih cepat daripada nanti.
sumber
Sesuatu dari Input Komunitas. Ada Validator baru yang digunakan Zend_Validate_File_Extension sesuai di bawah ini:
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
"Solusinya adalah mengedit tambalan dan hanya menghapus perubahan dari app / Mage.php Saya akan sangat mencegah praktik ini, tetapi situasinya sangat kritis".
sumber
Solusi sementara saya adalah untuk menyalin
lib/Zend/Validate/File/Extension.php
keapp/code/local/Zend/Validate/File/Extension.php
dan menghapus bagian dari kode dariisValid()
metode:Itu akan menjadi ...
Ketika Magento 1.9.4.2 dirilis saya periksa lagi.
Faktanya, file tidak dapat dibaca, atau tidak ada, tidak berarti nama file tidak valid, bukan?
sumber
Saya sarankan untuk tidak mengubah kode inti dan menggunakan pembaruan seperti ini ( https://gist.github.com/mehdichaouch/99c67298b5a65f81219c9b69942b6fe7 )
sumber
Ada masalah lain (yang mungkin disengaja dari tim Magento) yang mencegah kemampuan untuk menulis file log di dalam subfolder. Sebagai contoh:
Di versi sebelumnya, panggilan itu akan membuat file di lokasi:
/your-magento-app-root-folder/var/log/somefolder/anotherfolder/somelogfile.log
Tetapi karena ada metode
basename()
pemanggilan fungsiMage::log()
, file tersebut ditulis di:/your-magento-app-root-folder/var/log/somelogfile.log
.Berikut adalah kode yang dicurigai di
app/Mage.php
:Meskipun tidak terkait dengan 1.9.4.1, masalah mulai terjadi baru-baru ini (sekitar versi 1.9.3.x terbaru) dan sangat menjengkelkan ketika Anda harus berurusan dengan banyak file log, kadang-kadang dengan nama yang sama ( tetapi awalnya di subfolder yang berbeda).
Karena sepotong kode mungkin disengaja dari tim Magento, saya pikir tidak ada rencana untuk memperbaikinya dalam rilis lebih lanjut, yang menyiratkan untuk meretasnya untuk memulihkan perilaku awal ...
sumber