Wie wird die Magento-Version per Code angezeigt?

28

Ich möchte wissen, ob eine Klassendatei verfügbar ist, um die Magento-Version zu kennen. Wenn die Website gehackt wurde, wie kann man die Version anzeigen?

Ich weiß, dass es folgenden Weg gibt.

Mage::getVersion();

Aber wenn sowohl das Frontend als auch das Backend der Magento-Site nicht funktionieren, wie können wir das überprüfen, indem wir Klassendateien durchgehen? Welche Klasse muss überwiesen werden?

Sukeshini
quelle
6
Ein Hinweis für Abwähler: Die Magento SE richtet sich an Entwickler und Anwender gleichermaßen. Diese Frage ist eindeutig im Bereich der letzteren.
benmarks
Magento verliert auch Informationen in seinen Basis-Skin-Installationen. Wenn Sie sich das Kennzeichen ansehen, können Sie es schnell erkennen.
Fiasco Labs

Antworten:

36

Die Mage::getVersion()Methode wird hier definiert

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

Wenn getVersionInfowir zu dem oben genannten springen , finden wir Folgendes

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

Daher verwendet Magento das von der getVersionInfoMethode zurückgegebene Array , um eine Versionsnummer zu erhalten. Wir können dies manuell (mit unserem Verstand) tun und uns die Version 1.7.0.2 für die oben aufgeführte Methode ausdenken. Wenn wir gefunden haben

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

Wir würden wissen, dass die Version die 1. Beta von 1.5.0.0 war.

Das heißt, wenn die Site gehackt wurde, sind alle Wetten deaktiviert - da Hacker wahrscheinlich mehrere Klassendateien geändert und eine Version von Magento erstellt haben, die es nicht gibt.

Alan Storm
quelle
Wenn die Site also gehackt wurde und wir auch kein Backup haben, gibt es keine richtige Möglichkeit, eine genaue Version zu erhalten? (Angenommen, die oben genannten Funktionen wurden ebenfalls geändert.)
Sukeshini,
4
Die Versionsnummer der Magento-Anwendung wird nur dort gespeichert, app/Mage.phpwo Alan Storm Notizen macht. Sie öffnen es in einem Texteditor und prüfen, ob die Vorder- / Rückseite nicht mehr funktioniert. Sie können die Modulversionierung in der Tabelle core_resource nachschlagen. Diese Nummern werden aus den module/etc/config.xmlDateien für jedes Modul importiert . Wenn die Mage.phpDatei fehlt oder geändert wurde, gibt es keinen anderen Ort, an dem ich weiß, dass sie gespeichert wird.
Fiasko Labs
@Fiasco Labs: Danke für die Antwort. +1
Sukeshini
@ Alan Storm: Danke für die nette und ausführliche Erklärung. Ich habe die Akten nach Ihren Angaben durchgesehen.
Sukeshini
2
Beachten Sie, dass bei einer fehlgeschlagenen / fehlerhaften Upgrade-Installation die Version möglicherweise nicht korrekt angezeigt wird Mage.php. Eine kürzlich von mir gehackte Site meldete 1.7.0.2, aber als ich mir die Dateien tatsächlich ansah, war klar, dass diese Site noch auf 1.6 war.
pspahn
5

Wir können das Magento, welches die Version verwendet, jetzt leicht finden.

Öffne einfach deinen Root-Ordner /app/Mage.php

In der Nähe der 168-Zeile findest du folgenden Code:

public static function getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Dies bedeutet, dass wir derzeit die Version 1.9.0.1 verwenden.

Teja Bhagavan Kollepara
quelle
5

Wenn Sie gehackt sind, müssen Sie das Backup wiederherstellen. Anschließend können Sie diesen Befehl aus dem Magento-Stammordner ausführen, um die Version schnell zu überprüfen:

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

Version: 1.9.2.3

oder noch schneller:

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
quelle
1

Eine einfache Möglichkeit ist, den Browser umzubenennen app/etc/local.xml, app/etc/local.xml.bkpum den Installationsbildschirm anzuzeigen, in der Fußzeile dieses Bildschirms wird die Version der Installation angezeigt, in meinem Fall war es die Lösung.

Alexandre S. Silva
quelle
1

Das Deaktivieren der Kompilierung unter System-> Tools-> Compilation löste das Problem für mich.

Ivaylo Alexandrov
quelle