¿Cómo obtener la versión de Magento en Magento2? (Equivalente de Mage :: getVersion ())

23

¿Cómo obtengo la versión de Magento en Magento2.x (por ejemplo 2.0.0)?

En Magento1.x, podría hacerlo con

Mage::getVersion()

Entonces, ¿cuál es el equivalente en Magento2.x?

Manuel M
fuente

Respuestas:

20

Hasta la versión 2.0.7 de Magento, el número de versión se mantenía en la AppInterface::VERSIONconstante.

Con el lanzamiento de Magento 2.1 se eliminó la constante.

Así que hasta 2.0.7 si marca el archivo de pie de página adminhtml donde se muestra la versión

Pie de página del panel de administración

Tenía referencia a la \Magento\Framework\AppInterface::VERSIONconstante.

Pero desde que se lanzó Magento 2.1, el archivo de pie de página ahora usa el \Magento\Backend\Block\Page\Footer::getMagentoVersion()que a su vez llama a \Magento\Framework\App\ProductMetadata::getVersion().

Anteriormente, la ProductMetadata::getVersion()utiliza para devolver el valor de la constante \Magento\Framework\AppInterface::VERSION, pero ahora se analiza el composer.json, así como composer.locky devuelve la versión de Magento apropiada

Entonces, no importa en qué versión se encuentre en 2.0.xo 2.1.x, si usa el \Magento\Framework\App\ProductMetadata::getVersion()método, siempre obtendrá la versión de Magento adecuada.

Conclusión:

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
Atish Goswami
fuente
composer.jsonpuede contener una restricción de versión como "^ 2.1" que no indica la versión exacta, por lo que Magento (también) está verificando el composer.lockarchivo para ver qué versión exacta está instalada actualmente.
7ochem
@ 7ochem gracias por la información, también actualicé la respuesta :)
Atish Goswami
21

Puede usar esto en versiones 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Para la versión 2.1:

Camino 1, usando DI:

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

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

Camino 2, usando ObjectManager directamente:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();
Sohel Rana
fuente
Dicha implementación se puede encontrar en app / code / Magento / Backend / view / adminhtml / templates / page / footer.phtml
Valery Statichnyi el
1
NOTA: esto ya NO funciona para Magento 2.1+ (¡vea otras respuestas!)
Manuel M
otra respuesta realmente funciona? En mi caso a través del informe de error. Mira mi nueva respuesta.
Sohel Rana
10

Las soluciones mencionadas no son aplicables a partir de Magento 2.1 ( \Magento\Framework\AppInterface::VERSIONse eliminó la constante)

La nueva forma de obtener la versión es recuperarla de la instancia de metadatos del producto (lee la versión de composer.json):

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

(mejor inyectar metadatos del producto al constructor como \Magento\Framework\App\ProductMetadataInterface)

Sergii Ivashchenko
fuente
10

Además de las otras respuestas, puede obtener la versión principal (por ejemplo 2.1) accediendo /magento_versiona su sitio web Magento 2.

Raphael en Digital Pianism
fuente
Gracias por señalar esto. Me parece una fuga de seguridad: esta es una excelente manera para que los hackers encuentren sitios vulnerables de Magento 2. Por supuesto, parece que solo puede obtener la versión mayor y menor de esta manera, pero aún así parece una mala idea.
toon81
gran truco "rápido y sucio", gracias!
maoizm
6

En caso de que alguien tenga que encontrarlo manualmente. La versión básica del módulo Magento se encuentra en este archivo compositor:

vendor/magento/magento2-base/composer.json

También como se sugirió anteriormente, para que el código siguiente funcione:

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

\Magento\Framework\App\ProductMetadataahora requiere ComposerJsonFinderque se pase la instancia en el momento de la instanciación.

Un ejemplo que encontré en 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);

El código anterior es solo para fines informativos. Tienes que cavar más para que funcione.

div
fuente
6

Puede ejecutar el siguiente comando para obtener la versión de magento:

php bin/magento --version
Sarjan Gautam
fuente
parece que esto no diferencia las ediciones Community vs. Enterprise de Magento
maoizm el
4

Para usuarios como Unix

No es necesario escribir ningún código PHP para esto. Debido a que Magento 2 utiliza compositor, lo hace todo más fácil. Puedes hacer esto de dos maneras:

Compruebe el composer.json y busque una clave llamada versión. Si eres como yo a quien le gusta usar el terminal, puedes hacer algo como en la raíz del proyecto.

composer licenses | grep Version:

Esto devuelve la versión del M2 si desea verificar si se trata de una versión comunitaria o empresarial, simplemente haga lo siguiente:

composer licenses | grep Name:
André Ferraz
fuente
1

simplemente verifique el archivo composer.json en la raíz magento2, encontrará un texto como este

"version": "2.1.2",
Ansyori
fuente
composer.jsonpuede contener una restricción de versión como "^ 2.1" que no indica la versión exacta. Debe verificar el composer.lockarchivo para ver qué versión exacta está instalada actualmente.
7ochem
1

Prueba esto:

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

Para la versión 2.1:

<?php
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
?>
<?php  echo __('ver. %1', $version) ?>
Abdul
fuente
Solo funciona para 2.0.x, consulte: magento.stackexchange.com/a/96865/13642
Jeroen Vermeulen - MageHost
1

Aquí hay algunas formas de verificar la versión de Magento

Método n. ° 1: utilice la comprobación de código PHP

Verifique la versión de Magento 1
Mage::getVersion() //will return the magento version
Verifique la versión de Magento 2

Puede usar esto en versiones 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Para la versión 2.1:

La primera forma, usando DI:

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

La segunda forma, usando ObjectManager directamente:

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

Método # 2: Verifique la versión de Magento a través de la línea de comando

Puede ejecutar el siguiente comando para obtener la versión de Magento 2:

php bin/magento --version

En realidad, dado que Magento 2 ha utilizado su compositor para que no necesite escribir ningún código PHP para esto. En cambio, hay dos opciones para encontrar la versión de Magento 2:

En primer lugar, pruebe composer.json y busque la palabra clave de versión. Si prefiere usar la terminal, puede agregar algo en la raíz del proyecto.

composer licenses | grep Version:

Otra forma de verificar la versión de Magento 2 es la edición comunitaria o empresarial, escriba lo siguiente

composer licenses | grep Name:

Use el servicio web para verificar https://www.mageplaza.com/check-magento-version/

Decir la verdad
fuente