Como revelar a versão Magento por código?

28

Quero saber se existe algum arquivo de classe disponível para conhecer a versão do magento. Se o site foi invadido, como revelar a versão?

Eu sei que há uma maneira da seguinte maneira.

Mage::getVersion();

Mas se o front-end e o back-end do site magento não estão funcionando, como podemos verificar os arquivos de classe? Qual classe precisa se referir?

Sukeshini
fonte
6
Uma consideração para os que menos votam: o Magento SE é destinado a desenvolvedores e usuários . Esta questão está claramente na área deste último.
benmarks
O Magento também vaza informações em suas instalações de skin de base. Observando o padrão da licença, você pode identificá-lo rapidamente.
Fiasco Labs

Respostas:

36

O Mage::getVersion()método é definido aqui

#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 para o getVersionInforeferenciado acima, encontramos os seguintes

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

Portanto, o Magento usa a matriz retornada pelo getVersionInfométodo para criar um número de versão. Podemos fazê-lo manualmente (com nossas mentes) e criar a versão 1.7.0.2 para o método listado acima. Se encontrássemos

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

Saberíamos que a versão era a 1ª versão beta da 1.5.0.0.

Dito isto, se o site foi invadido, todas as apostas estão desativadas - já que os hackers provavelmente modificaram vários arquivos de classe e criaram uma versão do Magento que não existe.

Alan Storm
fonte
Portanto, se o site foi invadido e também não temos backup, não existe uma maneira adequada de obter a versão exata? (Assume hackers foram modificados acima funções tão bem)
Sukeshini
4
O número da versão do aplicativo Magento é armazenado apenas no local app/Mage.phponde Alan Storm observa. Você o abre em um editor de texto e verifica se a frente / trás está desativada. Você pode procurar a versão do módulo na tabela core_resource, esses números são importados dos module/etc/config.xmlarquivos para cada módulo. Se o Mage.phparquivo estiver ausente ou modificado, não há outro lugar que eu conheça sobre ele sendo armazenado.
Fiasco Labs
@Fiasco Labs: Obrigado pela resposta. +1
Sukeshini 01/01
@ Alan Storm: Obrigado pela explicação agradável e detalhada. Eu fui através dos arquivos como você mencionou.
Sukeshini
2
Lembre-se de que uma instalação com falha / falha na atualização pode exibir incorretamente a versão Mage.php. Um site recente em que trabalhei foi hackeado e estava relatando a versão 1.7.0.2, mas, na verdade, olhando para os arquivos, ficou claro que o site ainda estava na versão 1.6.
Pspahn
5

Podemos encontrar o magento que versão está usando agora facilmente.

Basta abrir sua pasta raiz /app/Mage.php

Perto da linha 168, você pode encontrar o seguinte código

public function static getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Isso significa que atualmente estamos usando a versão 1.9.0.1.

Teja Bhagavan Kollepara
fonte
5

se hackeado, você precisará restaurar o backup e executar esse comando na pasta raiz do magento para verificar a versão rapidamente:

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

Version: 1.9.2.3

ou ainda mais 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
fonte
1

Uma maneira fácil de renomear app/etc/local.xmlpara app/etc/local.xml.bkpo navegador mostrará a tela de instalação, no rodapé dessa tela mostrará a versão da instalação, no meu caso, era a solução.

Alexandre S. Silva
fonte
1

Desativar a compilação em Sistema-> Ferramentas-> Compilação resolveu isso para mim.

Ivaylo Alexandrov
fonte