この新しい更新(1.9.4.1)の後、Mage :: log()は機能しません。どうやら、それはZend_Validate_File_Extension
Mage.phpの819行目と関係があるようis_readable()
です。log()
メソッド全体を以前のバージョンに戻し、再び機能します。
この問題を報告するためにMagentoチームに連絡できるメインチャンネルは何ですか?
この新しい更新(1.9.4.1)の後、Mage :: log()は機能しません。どうやら、それはZend_Validate_File_Extension
Mage.phpの819行目と関係があるようis_readable()
です。log()
メソッド全体を以前のバージョンに戻し、再び機能します。
この問題を報告するためにMagentoチームに連絡できるメインチャンネルは何ですか?
回答:
公式パッチの着信:)公式パッチを待っています... :(
piotrekkaminskiは13時間前にコメントしました
これは、以前のバージョンに移植される現在の公式パッチです(最新版で動作するはずです)https://gist.github.com/piotrekkaminski/0596cae2d25bf467edbd3d3f03ab9f8f
ソース:https : //github.com/OpenMage/magento-lts/pull/648#issuecomment-480941871
SUPEE-11086でのパッチ適用に関して、MagentoのサポートとSlackの両方の研究と相互作用に基づいて、これまでに発見したすべてを要約します。できること:
更新2:この問題は、次のパッチSUPEE-11155- https: //magento.com/security/patches/supee-11155で解決されます。いつものように、考えられる問題のスレッドのパッチチェックを適用する前に- セキュリティパッチSUPEE-11155-考えられる問題は?すばらしいコメントをありがとう、Aad Mathijssenに感謝します。
更新:EEバージョンの公式パッチがオンデマンドで利用可能です。基本的には、MagentoパッチファイルとしてラップされたPiotr Kaminskiの要点です。
app/Mage.php
パッチファイルの変更を削除します。これは私がこれまでやったことです。Zend_Validate_File_Extension::isValid
ファイルの存在検証を編集および削除します。Magento LTS github- https://github.com/OpenMage/magento-lts/pull/648で長い議論があります。このisValid
メソッドは予期しないことを行うため、一部のメンバーは修正を提案します。私の意見では、これは良い解決策ではありません、はいコードは悪いですが、それは永遠に存在し、カスタムモジュール/コードで使用されるかもしれません。それどころか、起こり得る最悪の事態は、ファイルの存在がチェックされないことです。local
コードプールのクラス全体を書き換えて適用できます。パッチを編集することにしました。v1.1がリリースされたら、編集したパッチを元に戻し、元のバージョンとその修正を適用します。これはビルドプロセスと内部ポリシーによく適合しますが、異なる場合があります。どのような選択をしたとしても、このパッチはすぐに適用する方が良いでしょう。
コミュニティ入力からの何か。以下のように、Zend_Validate_File_Extensionが使用される新しいValidatorがあります。
「解決策はパッチを編集し、app / Mage.phpから変更を削除するだけです。このプラクティスを強くお勧めしますが、状況は重大です」。
私の一時的な解決策は、コピーすることだったlib/Zend/Validate/File/Extension.php
にapp/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がリリースされたら、もう一度確認します。
実際、ファイルが読めない、または存在しないということは、ファイル名が有効ではないということではありませんか?
コアコードを変更せずに、このようなアップデートを使用することをお勧めします(https://gist.github.com/mehdichaouch/99c67298b5a65f81219c9b69942b6fe7)
$installer->run("
INSERT INTO `{$installer->getTable('core_config_data')}` (scope, scope_id, path, value)
VALUES ('default', 0, 'dev/log/allowedFileExtensions', 'log,txt,html,csv')
ON DUPLICATE KEY UPDATE value = 'log,txt,html,csv';
");
サブフォルダー内にログファイルを書き込む機能を妨げる別の問題(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チームの意図的なものなので、今後のリリースで修正する予定はないと思います。つまり、ハックして初期の動作を復元することを意味します...