¿Cómo revelar la versión de Magento por código?

28

Quiero saber si hay algún archivo de clase disponible para conocer la versión de magento. Si el sitio ha sido pirateado, ¿cómo revelar la versión?

Sé que hay una manera como sigue.

Mage::getVersion();

Pero si tanto el front-end como el back-end del sitio de magento no funcionan, ¿cómo podemos verificar revisando los archivos de clase? ¿Qué clase necesita referir?

Sukeshini
fuente
66
Una consideración para los votantes negativos: Magento SE está destinado a desarrolladores y usuarios por igual. Esta pregunta está claramente en el área de este último.
puntos de referencia el
Magento también filtra información en sus instalaciones de skin base. Al mirar el repetitivo de la licencia, puede fijarlo con bastante rapidez.
Fiasco Labs

Respuestas:

36

El Mage::getVersion()método se define aquí.

#File: app/Mage.php
public static function getVersion()
{
    $i = self::getVersionInfo();
    return trim("{$i['major']}.{$i['minor']}.{$i['revision']}" . ($i['patch'] != '' ? ".{$i['patch']}" : "")
                    . "-{$i['stability']}{$i['number']}", '.-');
}

Saltando a lo getVersionInfomencionado anteriormente, encontramos lo siguiente

#File: app/Mage.php
public static function getVersionInfo()
{
    return array(
        'major'     => '1',
        'minor'     => '7',
        'revision'  => '0',
        'patch'     => '2',
        'stability' => '',
        'number'    => '',
    );
}

Entonces, Magento utiliza la matriz devuelta por el getVersionInfométodo para obtener un número de versión. Podemos hacerlo manualmente (con nuestras mentes) y proponer la versión 1.7.0.2 para el método mencionado anteriormente. Si encontramos

public static function getVersionInfo()
{
    return array(
        'major'     => '1',
        'minor'     => '5',
        'revision'  => '0',
        'patch'     => '0',
        'stability' => 'beta',
        'number'    => '1',
    );
}

Sabríamos que la versión fue la primera beta de 1.5.0.0.

Dicho esto, si el sitio ha sido pirateado, todas las apuestas están canceladas, ya que los hackers probablemente han modificado múltiples archivos de clase y crean una versión de Magento que no existe.

Alan Storm
fuente
Entonces, si el sitio ha sido pirateado y no tenemos copia de seguridad también, ¿no hay una forma adecuada de obtener la versión exacta? (Suponga que los hackers también han modificado las funciones anteriores)
Sukeshini
44
El número de versión de la aplicación Magento solo se almacena en las app/Mage.phpnotas de Alan Storm. Lo abres en un editor de texto y miras si el anverso / reverso están desactivados. Puede buscar el control de versiones del módulo en la tabla core_resource, estos números se importan de los module/etc/config.xmlarchivos para cada módulo. Si Mage.phpfalta el archivo o está modificado, no hay otro lugar que yo sepa que esté almacenado.
Fiasco Labs
@Fiasco Labs: Gracias por la respuesta. +1
Sukeshini
@ Alan Storm: Gracias por la explicación agradable y detallada. Revisé los archivos según lo que ha mencionado.
Sukeshini
2
Tenga en cuenta que una instalación de actualización fallida / fallida puede mostrar incorrectamente la versión en Mage.php. Un sitio reciente en el que trabajé que fue pirateado informaba 1.7.0.2 pero cuando realmente miraba los archivos estaba claro que este sitio todavía estaba en 1.6.
pspahn
5

Podemos encontrar el magento qué versión está usando ahora fácilmente.

Simplemente abra su carpeta raíz /app/Mage.php

Cerca de la línea 168, puede encontrar el siguiente código

público función estática getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Significa que actualmente estamos utilizando la versión 1.9.0.1.

Teja Bhagavan Kollepara
fuente
5

si hackeado, entonces necesita restaurar la copia de seguridad, y luego puede ejecutar este comando desde la carpeta raíz de magento para verificar la versión rápidamente:

echo "Version: $(php -r "require 'app/Mage.php'; echo Mage::getVersion();")"

Version: 1.9.2.3

o incluso más rápido:

grep -A 10 "function getVersionInfo" app/Mage.php 

public static function getVersionInfo()
{
    return array(
        'major'     => '1',
        'minor'     => '9',
        'revision'  => '2',
        'patch'     => '3',
        'stability' => '',
        'number'    => '',
    );
}
MagenX
fuente
1

Una forma fácil de cambiar el nombre app/etc/local.xmlal app/etc/local.xml.bkpnavegador mostrará la pantalla de instalación, al pie de esta pantalla se mostrará la versión de instalación, en mi caso fue la solución.

Alexandre S. Silva
fuente
1

Desactivar la compilación de Sistema-> Herramientas-> Compilación lo resolvió por mí.

Ivaylo Alexandrov
fuente