Po tej nowej aktualizacji (1.9.4.1) Mage :: log () nie działa. Najwyraźniej ma to coś wspólnego z Zend_Validate_File_Extension
linią 819 na Mage.php, gdzie sprawdza, czy plik is_readable()
jeszcze nie istnieje. Całą log()
metodę odwróciłem do poprzedniej wersji i znów działa.
Jaki jest główny kanał, z którym mogę skontaktować się z zespołem Magento w celu zgłoszenia tego problemu?
magento-1.9
log
bug
magento-1.9.4.1
rodrigoriome
źródło
źródło
Odpowiedzi:
Nadchodzi oficjalna łatka :)Nadal czekam na oficjalną łatkę ... :(Źródło: https://github.com/OpenMage/magento-lts/pull/648#issuecomment-480941871
źródło
Podsumuję wszystko, co do tej pory znalazłem na podstawie badań i interakcji z Magento, zarówno wsparcia, jak i Slacka, w odniesieniu do łatania za pomocą SUPEE-11086. Co można zrobić:
AKTUALIZACJA 2: Problem został rozwiązany w następnej PATCH SUPEE-11155 - https://magento.com/security/patches/supee-11155 . Jak zawsze przed zastosowaniem sprawdzania poprawek dla wątku możliwych problemów - Poprawka bezpieczeństwa SUPEE-11155 - Możliwe problemy? Podziękowania dla Aada Mathijssena za świetny komentarz.
Aktualizacja: oficjalna łatka jest dostępna na żądanie dla wersji EE. Zasadniczo jest to treść Piotra Kamińskiego opakowana jako plik łatki Magento.
app/Mage.php
w pliku poprawki. Tak właśnie zrobiłem.Plusy - logowanie działa jak poprzednio.
Wady - edycja pliku łatki, logowanie nie jest chronione przed możliwym exploitem (ale to powinno być bardzo niskie ryzyko). Kiedy Magento wyda oficjalną poprawkę, będziesz musiał ją cofnąć i zastosować oryginalną, niezredagowaną łatkę.
Plusy -
Wady Magento - Będziesz musiał poczekać, aż stanie się oficjalny, lub wziąć odpowiedzialność i spakować go jako łatkę, co przywróci cię do konieczności przywracania, gdy oficjalna łatka się pojawi.
Niewielka zmiana byłaby możliwa zamiast dodawania dwóch łat w celu edycji oryginalnej z tymi zmianami.
Zend_Validate_File_Extension::isValid
i usuń sprawdzanie poprawności istnienia pliku. długa dyskusja w Magento LTS github - https://github.com/OpenMage/magento-lts/pull/648 .isValid
Sposób robi rzeczy, to nie można oczekiwać, aby zrobić, więc niektórzy członkowie proponują, aby to naprawić. Moim zdaniem nie jest to dobre rozwiązanie, tak, kod jest zły, ale był tam na zawsze i może być używany w niestandardowych modułach / kodzie. Wręcz przeciwnie, najgorsze, co może się zdarzyć, to to, że pliki nie są sprawdzane pod kątem istnienia.Plusy - raczej prosta poprawka
Wady - zmienia plik biblioteki i poprawia jego funkcjonalność.
Możesz zastosować to jako poprawkę niestandardową lub przepisując całą klasę w
local
puli kodów.Wybrałem edycję łatki, a kiedy pojawi się wersja 1.1, przywrócę edytowaną łatkę i zastosuję oryginalną wersję, a następnie poprawkę. Odpowiada to naszemu procesowi kompilacji i polityce wewnętrznej, może być dla Ciebie inaczej. Bez względu na to, co wybierzesz, lepiej zastosować tę łatkę wcześniej niż później.
źródło
Coś z wkładów społeczności. Jest nowy Walidator jest używany Zend_Validate_File_Extension zgodnie z poniższym:
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
„Rozwiązaniem jest edycja łatki i usunięcie zmian z aplikacji / Mage.php. Odradzałbym tę praktykę, ale sytuacja jest krytyczna”.
źródło
Moje rozwiązanie tymczasowe było skopiować
lib/Zend/Validate/File/Extension.php
doapp/code/local/Zend/Validate/File/Extension.php
i usunąć tę część kodu zisValid()
metody:Stałoby się ...
Po wydaniu Magento 1.9.4.2 sprawdzam to ponownie.
W rzeczywistości plik nie jest czytelny lub nie istnieje, nie oznacza to, że nazwa pliku jest nieprawidłowa, prawda?
źródło
Sugeruję, aby nie zmieniać kodu podstawowego i używać takiej aktualizacji ( https://gist.github.com/mehdichaouch/99c67298b5a65f81219c9b69942b6fe7 )
źródło
Istnieje inny problem (który może być celowy z zespołu Magento), który uniemożliwia zapisywanie plików dziennika w podfolderach. Na przykład:
We wcześniejszych wersjach to wywołanie utworzyłoby plik w lokalizacji:
/your-magento-app-root-folder/var/log/somefolder/anotherfolder/somelogfile.log
Ale ponieważ
basename()
wMage::log()
metodzie jest wywołanie funkcji , plik jest zapisywany w:/your-magento-app-root-folder/var/log/somelogfile.log
.Oto oskarżony kod w
app/Mage.php
:Nawet jeśli nie jest to szczególnie związane z wersją 1.9.4.1, problem zaczął się ostatnio pojawiać (około najnowszych wersji 1.9.3.x) i jest bardzo denerwujący, gdy masz do czynienia z wieloma plikami dziennika, czasem o tej samej nazwie ( ale początkowo w różnych podfolderach).
Ponieważ ten fragment kodu jest prawdopodobnie zamierzony przez zespół Magento, myślę, że nie ma planu, aby go naprawić w kolejnej wersji, co oznacza zhakowanie go w celu przywrócenia początkowego zachowania ...
źródło