Mage :: log () yeni Magento güncellemesi üzerinde çalışmıyor (1.9.4.1)


23

Bu yeni güncellemeden sonra (1.9.4.1) Mage :: log () çalışmıyor. Görünüşe göre, Zend_Validate_File_ExtensionMage.php adresindeki 819 satırında, dosyanın daha is_readable()önce var olup olmadığını kontrol ettiği yerde yapması gereken bir şey var. Tüm log()yöntemi önceki sürümüne geri çevirdim ve yeniden çalışıyor.

Bu sorunu bildirmek için Magento ekibiyle bağlantı kurabileceğim ana kanal nedir?


1
@PiotrSiejczuk Bu yeni günlük dosyaları için çalışmıyor. İkinci yorumunuz, günlük döndürme yapılandırmasını değiştirme yeteneğinin bu durumu ciddi bir sorun haline getirmediğini ve tamamen katılmıyorum olduğunu ima ediyor. İlk yorumunuz, bunun muhtemelen OP için ya da bir nevi ileri vaka için bir sorun olduğunu ve bununla da aynı fikirde olduğumu ima ediyor. Magento'nun neden bu hatayı farketmediğini tamamen anlıyorum, ancak bu imalar burada ihtiyaç duyulanın tam tersi (kasıtlı olsun veya olmasın).
toon81

3
Bunun sorunlu olduğu birçok durum vardır: temiz kurulumlar (bu durumda system.log henüz mevcut değildir), özel günlük dosyalarına giriş yapan yerel ve üçüncü taraf modüllerin yaratılması / kurulması, açıkça oluşturmayan konfigürasyonların yapılması / orijinal günlük dosyasını sakla.
Aad Mathijssen

3
Evet, günlük kaydı her yazılım için önemlidir, neden geçmesine izin verdiklerini merak ediyorum. Benim hayalim, 2020 geldiğinde ve Magento ekibi 1.x'i desteklemeyi bıraktığında, son sürümlerini resmi Git deposuna yükleyerek toplumun güncel kalmasını sağlamak.
rodrigoriome

1
@cslogic "Benim hayalim, 2020 geldiğinde ve Magento ekibi 1.x'i desteklemeyi bıraktığında, son sürümlerini resmi bir Git deposuna yükleyerek topluluğun güncel kalmasını sağlamak." => Zaten OpenMage LTS ile yapıldı: github. com / OpenMage / magento-lts
Frédéric MARTINEZ

1
@ FrédéricMARTINEZ çok komik, Ben Marks aslında ben size yorum okumadan yaklaşık 30 dakika önce o repodan bahsetti .. Yine de teşekkürler, bir göz atacağım
rodrigoriome

Yanıtlar:



7

SUPEE-11086 ile yamalar konusunda Magento ile araştırma ve etkileşime dayanarak bulduğum her şeyi özetleyeceğim. Ne yapılabilir:

GÜNCELLEME 2: Bir sonraki PATCH SUPEE-11155 - https://magento.com/security/patches/supee-11155 adresinde sorun çözüldü . Her zaman olduğu gibi yamayı uygulamadan önce olası sorunları kontrol edin - Güvenlik Düzeltme Eki SUPEE-11155 - Olası sorunlar? Teşekkürler harika yorum için Aad Mathijssen için gidiyor .

Güncelleme: EE versiyonuna talep üzerine resmi bir yama mevcuttur. Temel olarak, Piotr Kaminski'nin özü Magento'nun yama dosyasıyla sarılmış hali.

  1. app/Mage.phpDüzeltme eki dosyasındaki değişiklikleri silin . Şimdiye kadar yaptığım şey bu.
    Artıları - günlüğe kaydetme eskisi gibi çalışır.
    Eksileri - Bir düzeltme eki dosyasını düzenlerken, günlüğe kaydetme olası bir istismardan korunmuyor (ancak bu çok düşük bir risk olmalıdır). Magento resmi bir düzeltme yayınladığında, geri almak ve orijinal düzenlenmemiş Düzeltme Ekini uygulamak zorunda kalacaksınız.
  2. Piotr Kaminski'nin özüne dayanarak en üste bir yama daha ekle - https://gist.github.com/piotrekkaminski/0596cae2d25bf467edbd3d3f03ab9f8f . Piotr Kaminski, güvenlikten sorumlu Magento'nun bir parçası, bu yüzden doğrudan atın ağzından geliyor. Gist, Magento'da paylaşıldı ve muhtemelen SUPEE-11086 v1.1 olarak bitecek.
    Artıları - Bu Magento yolu
    Eksileri - Bunun resmi hale gelmesini beklemeniz veya sorumluluk almanız ve onu yama olarak paketlemeniz gerekecek, bu da resmi bir yama tamamlandığında geri dönmeniz gerekecek.
    Bu değişikliklerle orijinali düzenlemek için iki yama eklemek yerine hafif bir değişiklik olabilir.
  3. Düzen Zend_Validate_File_Extension::isValidve kaldır dosya varlığı doğrulama. Magento LTS github'da uzun bir tartışma var - https://github.com/OpenMage/magento-lts/pull/648 . isValidYöntem kendinden bekleneni değil şeyler yapar, bu nedenle bazı üyeler düzeltmek için öneriyoruz. Bence bu iyi bir çözüm değil, evet, kod kötü, ama sonsuza dek oradaydı ve özel modüllerde / kodlarda kullanılabilir. Aksine, olabilecek en kötüsü dosyaların varlığı kontrol edilmez.
    Artıları - oldukça basit bir düzeltme
    Cons - bir kütüphane dosyasını değiştirir ve işlevselliğini değiştirir.
    Bunu özel bir düzeltme eki olarak veya tüm sınıfı localkod havuzuna yeniden yazarak uygulayabilirsiniz .

Düzeltme ekini düzenlemeyi seçtim ve bir v1.1 geldiğinde, düzeltilen düzeltme ekini geri döndüreceğim ve orijinal sürümü uygulayacağım ve bu düzeltmeden sonra. Bu bizim yapım sürecimize ve iç politikamıza çok yakışıyor, sizin için farklı olabilir. Seçtiğiniz ne olursa olsun, bu düzeltme ekini daha sonra uygulamak daha iyidir.


1
25 Haziran'dan itibaren, Magento SUPEE-11155, Magento Commerce 1.14.4.2 ve bu sorunla ilgili bir düzeltme içeren Magento Açık Kaynak 1.9.4.2'yi yayımladı. Temel olarak Piotr Kaminski'nin yaması dahil edildi.
Aad Mathijssen

4

Topluluk Girdilerinden bir şey. Yeni bir Validator var Zend_Validate_File_Extension aşağıdaki gibi

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

"Çözüm düzeltme ekini düzenliyor ve yalnızca app / Mage.php dosyasındaki değişiklikleri kaldırıyor. Bu uygulamayı kesinlikle reddederim, ancak durum kritiktir".


Gerçekten de kötü bir uygulama, ancak giriş yapmadan hayatta kalamam. Umarım Adobe yakında düzeltebilir
rodrigoriome

evet, tüm log dosyalarını yeniden oluşturmam gerekiyordu çünkü logrotator betiği dosyaları siliyor ve fermuarlar oluşturuyordu. Daha iyi bir magento senaryosu bulmam gerekecek.
Kalvin Klien

1
@KalvinKlien: Denediniz mi: copytruncate logrotate seçeneği? "Eski günlük dosyasını taşımak ve isteğe bağlı olarak yeni bir tane oluşturmak yerine, bir kopya oluşturduktan sonra orijinal günlük dosyasını yerinde sıfır boyutuna kadar kesin. Bazı programların günlük dosyasını kapatması istenemediğinde kullanılabilir ve bu nedenle yazmaya devam edebilir ( sonsuza dek önceki günlük dosyasına eklenir .. Dosyanın kopyalanması ve kesilmesi arasında çok küçük bir zaman dilimi olduğunu unutmayın, bu nedenle bazı günlük verileri kaybolabilir. Bu seçenek kullanıldığında, oluşturma seçeneğinin bir etkisi olmaz. eski günlük dosyası yerinde kalıyor ".
Piotr Siejczuk

@PiotrSiejczuk! Bunu kullandım: / path / var / log / * log {döndürmek 7 copytruncate günlük sıkıştırma missingok notifempty}
Kalvin Klien

1

Benim geçici çözüm kopyalamak oldu lib/Zend/Validate/File/Extension.phpiçin app/code/local/Zend/Validate/File/Extension.phpve kaldırmak gelen bu kod parçasını isValid()yöntemiyle:

    // Is file readable ?
    #require_once 'Zend/Loader.php';
    if (!Zend_Loader::isReadable($value)) {
        return $this->_throw($file, self::NOT_FOUND);
    }

Olacak ...

public function isValid($value, $file = null)
{
    if ($file !== null) {
        $info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1);
    } else {
        $info = pathinfo($value);
...

Magento 1.9.4.2 piyasaya sürüldüğünde tekrar kontrol ediyorum.

Aslında, dosyanın okunamıyor olması veya mevcut olmaması, dosya adının geçerli olmadığı anlamına gelmez, değil mi?



0

Alt klasörlerin içine günlük dosyaları yazma olanağını engelleyen başka bir konu daha var (Magento ekibinden kasıtlı olabilir). Örneğin:

Mage::log('Some log information', Zend_Log::DEBUG, 'somefolder/anotherfolder/somelogfile.log', true);

Daha önceki sürümlerde, bu çağrı konumda bir dosya oluşturacaktı:

/your-magento-app-root-folder/var/log/somefolder/anotherfolder/somelogfile.log

Ancak basename(), Mage::log()yöntemde bir işlev çağrısı olduğundan, dosya şu adrese yazılır:

/your-magento-app-root-folder/var/log/somelogfile.log.

İşte suçlanan kod app/Mage.php:

$file = empty($file) ?
    (string) self::getConfig()->getNode('dev/log/file', Mage_Core_Model_Store::DEFAULT_CODE) : basename($file);

Özellikle 1.9.4.1 ile ilgili olmasa bile, sorun son zamanlarda ortaya çıkmaya başladı (en son 1.9.3.x sürümlerinde) ve bazen aynı adı taşıyan birçok günlük dosyasıyla uğraşmanız gerektiğinde çok can sıkıcıdır ( ama başlangıçta farklı alt klasörlerde).

Bu kod parçası Magento ekibinden muhtemelen kasıtlı olduğu için, daha sonraki bir sürümde düzeltmeyi planlamanın olmadığını düşünüyorum, bu da ilk davranışını geri yüklemek için kesmek anlamına gelir ...


Bu alt klasör sorunu için hiçbir ipucu var, ancak gerçek günlüğü sorunu için biz kod bir parçasıyla ilgili duruyor gist.github.com/piotrekkaminski/...
rodrigoriome
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.