Magento2 में Magento संस्करण कैसे प्राप्त करें? (दाना के बराबर :: getVersion ())


23

मैं Magento2.x (जैसे 2.0.0) में Magento संस्करण कैसे प्राप्त करूं ?

Magento1.x में, मैं इसे कर सकता था

Mage::getVersion()

तो Magento2.x में बराबर क्या है?

जवाबों:


20

Magento के संस्करण 2.0.7 तक संस्करण संख्या AppInterface::VERSIONनिरंतर में बनाए रखी गई थी ।

Magento 2.1 की रिहाई के साथ स्थिर हटा दिया गया था।

इसलिए 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उपयुक्त मैगेंटो संस्करण को भी लौटा देता है

तो कोई फर्क नहीं पड़ता कि आप 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 धन्यवाद, उत्तर के रूप में अच्छी तरह से अद्यतन :)
आतिश गोस्वामी

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

इस तरह के कार्यान्वयन आपको ऐप / कोड / मैगनेटो / बैकएंड / देखने / adminhtml / टेम्प्लेट / पृष्ठ /
पाद लेख.फ़िल्टमी

1
नोट: यह Magento 2.1+ के लिए कोई लंबा काम नहीं करता है (अन्य उत्तर देखें!)
मैनुअल एम

अन्य उत्तर वास्तव में काम करते हैं? मेरे मामले में त्रुटि रिपोर्ट के माध्यम से। मेरा नया उत्तर देखें।
सोहेल राणा


10

उल्लेखित समाधान Magento 2.1 से शुरू होने वाले लागू नहीं हैं ( \Magento\Framework\AppInterface::VERSIONनिरंतर हटा दिया गया था)

संस्करण प्राप्त करने का नया तरीका उत्पाद मेटाडेटा इंस्टेंस से इसे पुनर्प्राप्त करना है (संगीतकार से संस्करण को पढ़ता है):

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

(उत्पाद मेटाडाटा को निर्माता के रूप में इंजेक्ट करना बेहतर है \Magento\Framework\App\ProductMetadataInterface)


10

अन्य उत्तर के शीर्ष पर, आप से (उदाहरण के 2.1 के लिए) प्रमुख संस्करण प्राप्त कर सकते हैं तक पहुँचने /magento_versionअपने Magento 2 वेबसाइट पर।


इस पर ध्यान दिलाने के लिए धन्यवाद। मेरे लिए एक सुरक्षा रिसाव की तरह लगता है: यह हैकर्स के लिए कमजोर मैगनेटो 2 साइटों को खोजने का एक शानदार तरीका है! बेशक, आप केवल इस तरह से प्रमुख और मामूली संस्करण प्राप्त करने में सक्षम हो सकते हैं, लेकिन यह अभी भी एक बुरा विचार की तरह लगता है।
तून81

महान "त्वरित और गंदी" चाल, धन्यवाद!
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

ऐसा लगता है कि यह Magento के समुदाय बनाम एंटरप्राइज़ संस्करणों को अलग नहीं करता है
maoizm

4

यूजर्स के लिए यूनिक्स की तरह

इसके लिए कोई PHP कोड लिखने की आवश्यकता नहीं है। क्योंकि Magento 2 संगीतकार का उपयोग करता है यह सब आसान बनाता है। आप इसे दो तरीके से कर सकते हैं:

कंपोज़र की जाँच करें। Json और एक मुख्य संस्करण की तलाश करें। यदि आप मेरे जैसे हैं जो टर्मिनल का उपयोग करना पसंद करते हैं तो आप परियोजना की जड़ पर कुछ कर सकते हैं।

composer licenses | grep Version:

यह M2 का संस्करण लौटाता है यदि आप किसी समुदाय या एंटरप्राइज़ संस्करण की जाँच करना चाहते हैं तो बस निम्नलिखित करें:

composer licenses | grep Name:

1

बस magento2 रूट पर कंपोजर.जॉन फ़ाइल की जाँच करें, आपको इस तरह से टेक्स्ट मिलेगा

"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) ?>

केवल 2.0.x के लिए काम करता है, देखें: magento.stackexchange.com/a/96865/13642
वर्म्यूलेन - मैजहोस्ट

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

दूसरा तरीका, 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

दरअसल, चूंकि मैगेंटो 2 ने अपने कंपोजर का उपयोग किया है, ताकि आपको इसके लिए कोई PHP कोड लिखने की आवश्यकता न हो। इसके बजाय, Magento 2 संस्करण को खोजने के लिए दो विकल्प हैं:

सबसे पहले, कृपया composer.json को आज़माएं और संस्करण कीवर्ड खोजें। क्या आपको टर्मिनल का उपयोग करना पसंद करना चाहिए, आप परियोजना की जड़ में कुछ जोड़ सकते हैं।

composer licenses | grep Version:

Magento के 2 संस्करण मौसम की जांच करने का दूसरा तरीका यह समुदाय या उद्यम संस्करण है, कृपया निम्नलिखित लिखें

composer licenses | grep Name:

Https://www.mageplaza.com/check-magento-version/ की जांच करने के लिए वेब सेवा का उपयोग करें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.