Comment révéler la version de Magento par code?

28

Je veux savoir s'il existe un fichier de classe disponible pour connaître la version de magento. Si le site a été piraté, comment révéler la version?

Je sais qu'il existe un moyen comme suit.

Mage::getVersion();

Mais si le frontend et le backend du site magento ne fonctionnent pas, comment pouvons-nous vérifier en parcourant les fichiers de classe? Quelle classe devez vous référer?

Sukeshini
la source
6
Une considération pour les votants: Magento SE est destiné aux développeurs et aux utilisateurs . Cette question relève clairement de ce dernier.
benmarks
Magento fuit également des informations dans ses installations de skin de base. En regardant le passe-partout de la licence, vous pouvez l'épingler assez rapidement.
Fiasco Labs

Réponses:

36

La Mage::getVersion()méthode est définie ici

#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']}", '.-');
}

Sautant à la getVersionInforéférence ci-dessus, nous trouvons ce qui suit

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

Donc, Magento utilise le tableau retourné par la getVersionInfométhode pour trouver un numéro de version. Nous pouvons le faire manuellement (avec notre esprit) et proposer la version 1.7.0.2 pour la méthode répertoriée ci-dessus. Si nous trouvions

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

Nous saurions que la version était la 1ère bêta de 1.5.0.0.

Cela dit, si le site a été piraté, tous les paris sont désactivés - car les pirates ont probablement modifié plusieurs fichiers de classe et créé une version de Magento qui n'existe pas.

Alan Storm
la source
Donc, si le site a été piraté et que nous n'avons pas de sauvegarde, il n'y a pas de moyen approprié d'obtenir la version exacte? (Supposons que les pirates ont également modifié les fonctions ci-dessus)
Sukeshini
4
Le numéro de version de l'application Magento n'est stocké que app/Mage.phplà où Alan Storm le note. Vous l'ouvrez dans un éditeur de texte et regardez si le recto / verso est disparu. Vous pouvez rechercher la version des modules dans la table core_resource, ces numéros sont importés à partir des module/etc/config.xmlfichiers de chaque module. Si le Mage.phpfichier est manquant ou modifié, il n'y a aucun autre endroit que je sache stocké.
Fiasco Labs
@Fiasco Labs: Merci pour la réponse. +1
Sukeshini
@Alan Storm: Merci pour l'explication gentille et détaillée. J'ai parcouru les fichiers comme vous l'avez mentionné.
Sukeshini
2
Gardez à l'esprit qu'une installation de mise à niveau échouée / bâclée peut afficher de manière incorrecte la version dans Mage.php. Un site récent sur lequel j'ai travaillé et piraté signalait la version 1.7.0.2, mais en regardant les fichiers, il était clair que ce site était toujours en version 1.6.
pspahn
5

Nous pouvons trouver le magento dont la version utilise maintenant facilement.

Ouvrez simplement votre dossier racine /app/Mage.php

Près de la ligne 168, vous pouvez trouver le code suivant

fonction statique publique getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Cela signifie que nous utilisons actuellement la version 1.9.0.1.

Teja Bhagavan Kollepara
la source
5

s'il est piraté, vous devez restaurer la sauvegarde, puis vous pouvez exécuter cette commande à partir du dossier racine de magento pour vérifier la version rapidement:

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

Version: 1.9.2.3

ou encore plus vite:

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
la source
1

Un moyen facile est renommage app/etc/local.xmlpour app/etc/local.xml.bkple navigateur affichera l'écran d'installation, au pied de cet écran affiche la version de l' installation, dans mon cas , il était la solution.

Alexandre S. Silva
la source
1

La désactivation de la compilation dans Système-> Outils-> Compilation l'a résolue pour moi.

Ivaylo Alexandrov
la source