Magento2でMagentoバージョンを取得する方法は?(Mage :: getVersion()と同等)


23

Magento2.xでMagentoバージョンを取得する方法(例2.0.0

Magento1.xでは、私はそれをすることができました

Mage::getVersion()

だからMagento2.xで同等のものは何ですか?

回答:


20

Magentoバージョン2.0.7まで、バージョン番号はAppInterface::VERSION定数で維持されていました。

Magento 2.1のリリースで、定数は削除されました。

バージョンが表示されているadminhtmlフッターファイルを確認すると、2.0.7まで

管理パネルのフッター

\Magento\Framework\AppInterface::VERSION定数を参照していました。

しかし、Magento 2.1のリリース以降、フッターファイルはを使用する\Magento\Backend\Block\Page\Footer::getMagentoVersion()ようになりました\Magento\Framework\App\ProductMetadata::getVersion()

以前はProductMetadata::getVersion()定数の値を返すために使用されて\Magento\Framework\AppInterface::VERSIONいましたが、今ではcomposer.json同様に解析しcomposer.lock、適切なmagentoバージョンを返します

したがって、2.0.xまたは2.1.xのどちらのバージョンを使用していても、この\Magento\Framework\App\ProductMetadata::getVersion()メソッドを使用すると、常に適切なMagentoバージョンが取得されます。

結論:

Magento 1:

Mage::getVersion() //will return the magento version

Magento 2:

//Updated to use object manager
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
$version = $productMetadata->getVersion(); //will return the magento version

composer.json正確なバージョンを示さない「^ 2.1」のようなバージョン制約が含まれている可能性があるため、Magentoは(また)composer.lockファイルをチェックして、現在インストールされている正確なバージョンを確認しています。
7ochem

@ 7ochem情報に感謝し、答えも更新しました:)
Atish Goswami

21

これは2.0.xバージョンで使用できます。

echo \Magento\Framework\AppInterface::VERSION;

バージョン2.1の場合:

方法1、DIを使用:

public function __construct(
        \Magento\Framework\App\ProductMetadataInterface $productMetadata
) {
    $this->productMetadata = $productMetadata;
}

public function getMagentoVersion()
{
    return $this->productMetadata->getVersion();
}

方法2、ObjectManagerを直接使用する:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();

このような実装あなたがで見つけることができるアプリ/コード/ Magentoの/バックエンド/ビュー/ adminhtml /テンプレート/ページ/ footer.phtml
ヴァレリーStatichnyi

1
注:これは、Magento 2.1以降では機能しません(他の回答を参照してください!)
マヌエルM

他の答えは実際に動作しますか?私の場合、エラー報告を通して。私の新しい答えをご覧ください。
ソヘルラナ


10

言及されたソリューションは、Magento 2.1以降では適用されません\Magento\Framework\AppInterface::VERSION定数が削除されました)

バージョンを取得する新しい方法は、製品メタデータインスタンスからバージョンを取得することです(composer.jsonからバージョンを読み取ります)。

$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();

(としてコンストラクタに製品メタデータを注入する方が良い\Magento\Framework\App\ProductMetadataInterface


10

他の回答に加えて、Magento 2 Webサイトにアクセスして、メジャーバージョン(たとえば2.1)を入手できます。/magento_version


これを指摘してくれてありがとう。私にはセキュリティリークのようです。これは、ハッカーが脆弱なMagento 2サイトを見つけるのに最適な方法です。もちろん、この方法でメジャーバージョンとマイナーバージョンを取得できるように思われますが、それでも悪い考えのようです。
toon81

すばらしい「クイック&ダーティ」トリック、ありがとう!
maoizm

6

誰かが手動で見つけなければならない場合に。基本のMagentoモジュールバージョンは、このコンポーザファイルにあります。

vendor/magento/magento2-base/composer.json

また、上記で提案したように、以下のコードを機能させるには:

$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();

\Magento\Framework\App\ProductMetadataComposerJsonFinderインスタンス化時にのインスタンスを渡す必要があります。

私が見つけた例dev/tests/integration/testsuite/Magento/Framework/Composer/ComposerInformationTest.php

$directories = [
    DirectoryList::CONFIG => [DirectoryList::PATH => __DIR__ . '/_files/'],
    DirectoryList::ROOT => [DirectoryList::PATH => __DIR__ . '/_files/' . $composerDir],
    DirectoryList::COMPOSER_HOME => [DirectoryList::PATH => __DIR__ . '/_files/' . $composerDir],
];

$this->directoryList = $this->objectManager->create(
    'Magento\Framework\App\Filesystem\DirectoryList',
    ['root' => __DIR__ . '/_files/' . $composerDir, 'config' => $directories]
);

$this->composerJsonFinder = new ComposerJsonFinder($this->directoryList);

上記のコードは、情報提供のみを目的としています。動作させるには、さらに掘り下げる必要があります。


6

以下のコマンドを実行して、magentoバージョンを取得できます。

php bin/magento --version

これは、Magentoのコミュニティエディションとエンタープライズエディションを区別しないようです
-maoizm

4

UNIXのようなユーザー向け

このためにPHPコードを記述する必要はありません。Magento 2は作曲家を利用するため、すべてが簡単になります。これには2つの方法があります。

composer.jsonを確認し、バージョンと呼ばれるキーを探します。ターミナルを使用するのが好きな私のようであれば、プロジェクトのルートで何かをすることができます。

composer licenses | grep Version:

コミュニティまたはエンタープライズバージョンであるかどうかを確認する場合、M2のバージョンを返します。次の操作を実行します。

composer licenses | grep Name:

1

magento2ルートのcomposer.jsonファイルをチェックするだけで、次のようなテキストが見つかります。

"version": "2.1.2",

composer.json正確なバージョンを示さない「^ 2.1」のようなバージョン制約が含まれる場合があります。composer.lockファイルをチェックして、現在インストールされている正確なバージョンを確認する必要があります。
7ochem


1

Magentoのバージョンを確認する方法を次に示します

方法#1:PHPコードチェックを使用する

Magento 1バージョンを確認する
Mage::getVersion() //will return the magento version
Magento 2のバージョンを確認する

これは2.0.xバージョンで使用できます。

echo \Magento\Framework\AppInterface::VERSION;

バージョン2.1の場合:

DIを使用する最初の方法:

public function __construct( \Magento\Framework\App\ProductMetadataInterface $productMetadata ) { 
    $this->productMetadata = $productMetadata; 
} 
public function getMagentoVersion() { 
    return $this->productMetadata->getVersion(); 
}

2番目の方法、ObjectManagerを直接使用する:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface'); 
echo $productMetadata->getVersion();

方法#2:コマンドラインでMagentoのバージョンを確認する

以下のコマンドを実行して、Magento 2バージョンを取得できます。

php bin/magento --version

実際、Magento 2はそのコンポーザーを使用しているため、このためにPHPコードを記述する必要はありません。代わりに、Magento 2バージョンを見つけるための2つのオプションがあります。

まず、composer.jsonを試して、バージョンキーワードを探してください。ターミナルの使用を希望する場合は、プロジェクトのルートに何かを追加できます。

composer licenses | grep Version:

Magento 2バージョンの天気を確認する別の方法は、コミュニティエディションまたはエンタープライズエディションです。次のように書いてください。

composer licenses | grep Name:

Webサービスを使用してhttps://www.mageplaza.com/check-magento-version/を確認します


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.