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 버전을 얻게됩니다.

결론:

마 젠토 1 :

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

마 젠토 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의 경우 :

DI를 사용하는 방법 1 :

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();

이러한 구현은 app / code / Magento / Backend / view / adminhtml / templates / page / footer.phtml
Valery Statichnyi

1
참고 : Magento 2.1 이상에서는 더 이상 작동하지 않습니다 (다른 답변 참조!)
Manuel M

다른 답변은 실제로 작동합니까? 내 경우에는 오류 보고서를 통해. 내 새로운 답변을 참조하십시오.
Sohel Rana 2016


10

언급 된 솔루션은 Magento 2.1부터 적용되지 않습니다 (\Magento\Framework\AppInterface::VERSION 상수는 제거됨)

버전을 얻는 새로운 방법은 Product Metadata Instance (composer.json에서 버전을 읽음)에서 검색하는 것입니다.

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

(생성자로 제품 메타 데이터를 삽입하는 것이 좋습니다 \Magento\Framework\App\ProductMetadataInterface)


10

다른 답변 외에도 Magento 2 웹 사이트액세스 하여 메이저 버전 (예 : 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\ProductMetadata이제 ComposerJsonFinder인스턴스화 시점에 인스턴스를 전달 해야합니다 .

내가 찾은 예 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

젠토의 엔터프라이즈 에디션 대 커뮤니티를 구분하지 않는 것 같습니다
maoizm

4

유닉스 같은 사용자

이를 위해 PHP 코드를 작성할 필요가 없습니다. Magento 2는 작곡가를 사용하기 때문에 더 편합니다. 이 두 가지 방법으로 할 수 있습니다.

composer.json을 확인하고 version이라는 키를 찾으십시오. 터미널을 좋아하는 나와 같은 사람이라면 프로젝트의 루트와 같은 것을 할 수 있습니다.

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

이 시도:

<?php echo __('Magento'); ?>
<?php  echo __('ver. %1', \Magento\Framework\AppInterface::VERSION) ?>

버전 2.1의 경우 :

<?php
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
?>
<?php  echo __('ver. %1', $version) ?>


1

마 젠토 버전을 확인하는 방법은 다음과 같습니다.

방법 # 1 : PHP 코드 검사 사용

마 젠토 1 버전 확인
Mage::getVersion() //will return the magento version
마 젠토 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(); 
}

두 번째 방법은 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 버전을 찾는 두 가지 옵션이 있습니다.

먼저 composer.json을 시도하고 version 키워드를 찾으십시오. 터미널 사용을 선호하는 경우 프로젝트 루트에 무언가를 추가 할 수 있습니다.

composer licenses | grep Version:

Magento 2 버전의 날씨를 확인하는 또 다른 방법은 커뮤니티 또는 엔터프라이즈 버전입니다.

composer licenses | grep Name:

웹 서비스를 사용하여 https://www.mageplaza.com/check-magento-version/ 을 확인 하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.