Mage :: log()が新しいMagentoアップデート(1.9.4.1)で機能しない


23

この新しい更新(1.9.4.1)の後、Mage :: log()は機能しません。どうやら、それはZend_Validate_File_ExtensionMage.phpの819行目と関係があるようis_readable()です。log()メソッド全体を以前のバージョンに戻し、再び機能します。

この問題を報告するためにMagentoチームに連絡できるメインチャンネルは何ですか?


1
@PiotrSiejczuk新しいログファイルでは機能しません。2番目のコメントは、ログローテーションの構成を変更できるため、これは深刻な問題ではなく、完全に同意しないことを意味します。あなたの最初のコメントは、これはおそらくOPの問題か、ある種のエッジケースの問題にすぎないことを示唆しており、私もそれに反対します。Magentoがこのバグに気付かなかった理由を私は完全に理解していますが、これらの意味はここで必要なものの反対です(意図的かどうか)。
16:09のtoon81

3
これが問題となる多くの状況があります:クリーンインストール(この場合、system.logはまだ存在しません)、カスタムログファイルにログを記録するローカルおよびサードパーティモジュールの作成/インストール、明示的に作成/元のログファイルを保持します。
Aad Mathijssen

3
ええ、ロギングはすべてのソフトウェアに不可欠です。なぜ彼らはそれを許可したのでしょうか。私の夢は、コミュニティを最新の状態に保つことができるようにレポ2020が付属しており、1.1をサポートMagentoのチームの停止時に、彼らは正式にGitへの最後のバージョンをアップロードすることである
rodrigoriome

1
@cslogic「私の夢は、2020年になり、Magentoチームが1.xのサポートをやめると、コミュニティが最新の状態を維持できるように、最新バージョンを公式のGitリポジトリにアップロードすることです」=> OpenMage LTS:github com / OpenMage / magento-lts
フレデリック

1
@FrédéricMARTINEZはベン・マークスは、実際に私はあなたがそれを見てみましょう、とにかく...感謝をコメント読む前に30分程度そのレポについて教えてくれました、面白いthatsの
rodrigoriome

回答:



7

SUPEE-11086でのパッチ適用に関して、MagentoのサポートとSlackの両方の研究と相互作用に基づいて、これまでに発見したすべてを要約します。できること:

更新2:この問題は、次のパッチSUPEE-11155- https: //magento.com/security/patches/supee-11155で解決されます。いつものように、考えられる問題のスレッドのパッチチェックを適用する前に- セキュリティパッチSUPEE-11155-考えられる問題は?すばらしいコメントをありがとう、Aad Mathijssenに感謝します。

更新:EEバージョンの公式パッチがオンデマンドで利用可能です。基本的には、MagentoパッチファイルとしてラップされたPiotr Kaminskiの要点です。

  1. app/Mage.phpパッチファイルの変更を削除します。これは私がこれまでやったことです。
    長所-ロギングは以前と同様に機能します。
    短所-パッチファイルを編集すると、ログは悪用の可能性から保護されません(ただし、これは非常に低いリスクです)。Magentoが公式修正をリリースするとき、元に戻し、元の未編集パッチを適用する必要があります。
  2. -ピョートル・カミンスキーの趣旨に基づいて上に別のパッチ追加https://gist.github.com/piotrekkaminski/0596cae2d25bf467edbd3d3f03ab9f8fを。Piotr Kaminskiはセキュリティを担当するMagentoの一部であるため、これは馬の口から直接届きます。GistはMagentoのスラックで共有され、おそらくSUPEE-11086 v1.1で終了します。
    長所-これはMagentoの方法です
    短所-これが公式になるのを待つか、責任を持って自分でパッチとしてパッケージ化する必要があります。
    2つのパッチを追加して、それらの変更を含む元のパッチを編集する代わりに、わずかなバリエーションがあります。
  3. Zend_Validate_File_Extension::isValidファイルの存在検証を編集および削除します。Magento LTS github- https://github.com/OpenMage/magento-lts/pull/648で長い議論があります。このisValidメソッドは予期しないことを行うため、一部のメンバーは修正を提案します。私の意見では、これは良い解決策ではありません、はいコードは悪いですが、それは永遠に存在し、カスタムモジュール/コードで使用されるかもしれません。それどころか、起こり得る最悪の事態は、ファイルの存在がチェックされないことです。
    長所-かなり単純な修正
    短所-ライブラリファイルを変更し、その機能を修正します。
    これをカスタムパッチとして適用するか、localコードプールのクラス全体を書き換えて適用できます。

パッチを編集することにしました。v1.1がリリースされたら、編集したパッチを元に戻し、元のバージョンとその修正を適用します。これはビルドプロセスと内部ポリシーによく適合しますが、異なる場合があります。どのような選択をしたとしても、このパッチはすぐに適用する方が良いでしょう。


1
6月25日の時点で、MagentoはSUPEE-11155、Magento Commerce 1.14.4.2、Magento Open Source 1.9.4.2をリリースしましたが、これらにはこの問題の修正が含まれています。基本的に、Piotr Kaminskiによるパッチが含まれています。
Aad Mathijssen

4

コミュニティ入力からの何か。以下のように、Zend_Validate_File_Extensionが使用される新しいValidatorがあります。

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から変更を削除するだけです。このプラクティスを強くお勧めしますが、状況は重大です」。


それは確かに悪い習慣ですが、ロギングなしでは生き残れません。Adobeがすぐに修正できることを願っています
rodrigoriome

ええ、logrotatorスクリプトがファイルを削除し、それらのzipを作成していたため、すべてのログファイルを再作成する必要がありました。magentoのより良いスクリプトを見つけて修正する必要があります。
カルビンクリエン

1
@KalvinKlien:試してみました:logrotateのcopytruncateオプション?「コピーを作成した後、古いログファイルを移動してオプションで新しいログファイルを作成する代わりに、元のログファイルをサイズ0に切り捨てます。ファイルをコピーしてから切り捨てるまでのタイムスライスは非常に短いため、一部のログデータが失われる可能性があることに注意してください。このオプションを使用すると、作成オプションは無効になります。古いログファイルはそのまま残ります」。
Piotr Siejczuk

ありがとう@PiotrSiejczuk!私はこれを使用しました:/ path / var / log / * log {rotate 7 copytruncate daily compress missingok notifempty}
Klien

1

私の一時的な解決策は、コピーすることだったlib/Zend/Validate/File/Extension.phpapp/code/local/Zend/Validate/File/Extension.phpして削除からのコードのこの部分をisValid()方法:

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

なるだろう...

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がリリースされたら、もう一度確認します。

実際、ファイルが読めない、または存在しないということは、ファイル名が有効ではないということではありませんか?



0

サブフォルダー内にログファイルを書き込む機能を妨げる別の問題(Magentoチームの意図的な場合があります)があります。例えば:

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

以前のバージョンでは、その呼び出しは次の場所にファイルを作成していました。

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

ただし、methodにはbasename()関数呼び出しがあるMage::log()ため、ファイルは次の場所に書き込まれます。

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

以下に、問題のあるコードを示しapp/Mage.phpます。

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

特に1.9.4.1とは関係ありませんが、この問題は最近(最新の1.9.3.xバージョン付近)に発生し始め、多くのログファイル(場合によっては同じ名前)を処理する必要があるときに非常に迷惑です(ただし、最初は異なるサブフォルダーにあります)。

そのコードはおそらくMagentoチームの意図的なものなので、今後のリリースで修正する予定はないと思います。つまり、ハックして初期の動作を復元することを意味します...


そのサブフォルダーの問題については手がかりはありませんが、実際のログの問題については、そのコードgist.github.com/piotrekkaminski/…を参照しています
rodrigoriome
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.