После этого нового обновления (1.9.4.1) Mage :: log () не работает. По-видимому, он имеет отношение к Zend_Validate_File_Extension
строке 819 в Mage.php, где он проверяет, существует ли файл еще is_readable()
до того, как он существует. Я вернул весь log()
метод к его предыдущей версии, и он снова работает.
По какому основному каналу я могу связаться с командой Magento, чтобы сообщить об этой проблеме?
magento-1.9
log
bug
magento-1.9.4.1
rodrigoriome
источник
источник
Ответы:
Официальный патч входящий :)Еще жду официального патча ... :(Источник: https://github.com/OpenMage/magento-lts/pull/648#issuecomment-480941871
источник
Я суммирую все, что я нашел до сих пор, основываясь на исследованиях и взаимодействии с Magento, а также с поддержкой и Slack в отношении исправлений с SUPEE-11086. Что может быть сделано:
ОБНОВЛЕНИЕ 2: проблема решена в следующем патче SUPEE-11155 - https://magento.com/security/patches/supee-11155 . Как всегда перед применением исправления проверьте ветку возможных проблем - Патч безопасности SUPEE-11155 - Возможные проблемы? Спасибо Aad Mathijssen за отличный комментарий.
Обновление: официальный патч доступен по запросу для версии EE. По сути, это суть Петра Каминского, завернутая в файл патча Magento.
app/Mage.php
в файле патча. Это то, что я сделал до сих пор.Плюсы - логирование работает как и раньше.
Минусы - редактирование файла патча, регистрация не защищена от возможного эксплойта (но это должно быть очень низким риском). Когда Magento выпустит официальное исправление, вам придется отменить его и применить оригинальный неотредактированный патч.
Плюсы - это
минусы в Magento. Вам придется подождать, пока это станет официальным, или взять на себя ответственность и упаковать его как патч самостоятельно, что вернет вас к необходимости отмены, как только выйдет официальный патч.
Небольшое изменение будет вместо добавления двух патчей для редактирования оригинального с этими изменениями.
Zend_Validate_File_Extension::isValid
и удалите проверку существования файла. В GitHub Magento LTS идет долгое обсуждение - https://github.com/OpenMage/magento-lts/pull/648 . ЭтотisValid
метод делает то, чего он не должен делать, поэтому некоторые участники предлагают исправить это. Мое мнение таково, что это не очень хорошее решение, да, код плохой, но он был там всегда и может использоваться в пользовательских модулях / кодах. Наоборот, худшее, что может случиться, - это то, что файлы не проверяются на наличие.Плюсы - довольно простое исправление
минусов - изменяет файл библиотеки и дополняет ее функциональность.
Вы можете применить это либо как пользовательский патч, либо переписав весь класс в
local
пуле кода.Я решил отредактировать патч, и когда выйдет версия 1.1, я верну отредактированный патч и приму оригинальную версию и после этого исправления. Это хорошо подходит для нашего процесса сборки и внутренней политики, может отличаться для вас. Независимо от того, что вы выбрали, лучше применить этот патч раньше, чем позже.
источник
Что-то из входов сообщества. Существует новый Validator используется Zend_Validate_File_Extension, как показано ниже:
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
«Решением является редактирование патча и просто удаление изменений из app / Mage.php. Я бы настоятельно не рекомендовал эту практику, но ситуация критическая».
источник
Мое временное решение было копировать
lib/Zend/Validate/File/Extension.php
вapp/code/local/Zend/Validate/File/Extension.php
и удалить эту часть кода изisValid()
метода:Это стало бы ...
Когда выходит Magento 1.9.4.2, я проверяю это снова.
На самом деле, файл не читается или не существует, не означает, что имя файла недействительно, верно?
источник
Я предлагаю не изменять основной код и использовать такое обновление ( https://gist.github.com/mehdichaouch/99c67298b5a65f81219c9b69942b6fe7 )
источник
Есть еще одна проблема (которая может быть умышленной со стороны команды Magento), которая препятствует возможности записи файлов журнала в подпапках. Например:
В более ранних версиях этот вызов создал бы файл в местоположении:
/your-magento-app-root-folder/var/log/somefolder/anotherfolder/somelogfile.log
Но поскольку
basename()
вMage::log()
методе есть вызов функции , файл записывается по адресу:/your-magento-app-root-folder/var/log/somelogfile.log
,Вот инкриминированный код в
app/Mage.php
:Даже если это не особенно связано с 1.9.4.1, проблема начала возникать недавно (в последних версиях 1.9.3.x) и очень раздражает, когда приходится иметь дело с большим количеством файлов журнала, иногда с одним и тем же именем ( но изначально в разных подпапках).
Поскольку этот фрагмент кода, вероятно, является преднамеренным от команды Magento, я думаю, что нет никакого плана, чтобы исправить это в следующем выпуске, который подразумевает взломать его, чтобы восстановить первоначальное поведение ...
источник