Entwicklermodus in der Produktionsumgebung


7

Ich wurde kürzlich von einem Kunden kontaktiert, um dessen Magento-Shop zu bewerten. Mir wurde klar, dass im Store (obwohl in der Produktion ausgeführt) der Entwicklermodus in der index.phpDatei aktiviert war :

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) { //the variable is set.
    Mage::setIsDeveloperMode(true);
}

Sie betreiben diesen Laden seit über 2 Jahren in Produktion. Ich machte die früheste Version der Datei , die von 2013.02.09 war und es immer noch hatte Entwicklermodus auf true eingestellt.

Nachdem ich diesen Artikel von Alan Storm gelesen habe: PHP-Fehlerbehandlung und Magento-Entwicklermodus Ich kann mir keinen Grund vorstellen, den Client zu empfehlen, den Entwicklermodus zu deaktivieren.

Gibt es irgendwelche nachteiligen Aspekte, wenn es in der Produktion aktiviert wird?

Alan Storms Zusammenfassung:

Der Entwicklermodus hilft Ihnen dabei, saubereren Code zu schreiben, ohne Ihre Benutzer umständlichen PHP-Fehlern auszusetzen, wenn etwas schief geht

Scheint ziemlich positiv für mich. Als Faustregel habe ich bisher die Produktionsumgebung nicht dem Entwicklermodus unterzogen.


3
Im Produktionsmodus sollte der Entwicklermodus deaktiviert sein. Andernfalls werden auch kleine PHP-Benachrichtigungsfehler im Frontend angezeigt. Wenn der Entwicklermodus deaktiviert ist, werden Benutzerfehler nur im Frontend angezeigt und detaillierte PHP-Fehler / Hinweise / Warnungen werden protokolliert.
Rajeev K Tomy

2
Möglicherweise fehlt hier etwas, aber was Sie aufgelistet haben, befindet sich im Standard-Kern-Magento für index.php. Natürlich enthält eine frühere Version dieser Datei denselben Codeblock. Sie sehen eine "IF" -Anweisung zum Aktivieren des Entwicklermodus (standardmäßig deaktiviert). Haben sie tatsächlich die Umgebungsvariable auf vhost-Ebene oder innerhalb von .htaccess festgelegt? Wenn die Variable $ _SERVER nicht festgelegt ist, ist der Entwicklermodus nicht aktiviert ...
Douglas Radburn

Ah, sorry :) Die Variable ist gesetzt.
Elch

Antworten:


8

Die meisten Entwickler neigen dazu, sofort zu antworten, dass es eine schlechte Sache ist, den Entwicklermodus auf einem Produktionsserver zu aktivieren, als ob dies eine wahre Tatsache wäre. Ich denke, das ist je nach Situation / Webshop unterschiedlich.

Was passiert, wenn Sie den Entwicklermodus aktivieren?

  1. mageCoreErrorHandler() wirft alle Fehler, anstatt sie zu protokollieren
  2. Magento gibt in bestimmten Situationen Fehler aus, in denen es diesen Fehler normalerweise stillschweigend ignoriert und fortfährt
  3. Mage::log() schreibt immer in das Protokoll, auch wenn die Protokollierung deaktiviert ist
  4. Beim Ausnahmedruck wird die Code-Ablaufverfolgung auf dem Bildschirm angezeigt, anstatt eine Fehlerberichtsseite anzuzeigen
  5. Andere kleinere Dinge in ignorieren überspringen Modul-Updates, Unternehmensseiten-Cache, ....

Ist das schlecht auf einem Produktionsserver?

  1. Ihre Website-Besucher könnten am Ende allerlei Kauderwelsch bekommen, der sie verwirren und sich daher negativ auf die Conversion Ihrer Website auswirken könnte
  2. Siehe Nr. 1
  3. Auf einem Produktionsserver hätten Sie wahrscheinlich viel mehr Seitenaufrufe als auf einem Testserver. Dies kann bedeuten, dass Ihre Protokolle überflutet werden können, wenn Sie die Protokollierung aktiviert (oder den Entwicklermodus aktiviert) haben.
  4. Dies ist derjenige, der schädlich sein könnte . Wenn Ihre Ausnahmespuren gedruckt werden, können sie bestimmte Informationen enthalten, die für Personen mit schlechten Absichten wertvoll sein können.
  5. ...

Zu diesen 5 Punkten kann ich sagen, dass sie stark von der Situation Ihrer Live-Website abhängen. Was ist dein Publikum? Haben sie Angst und rennen weg, wenn sie PHP-Ausnahmen und Spuren sehen? Wie viele Seitenaufrufe hat Ihre Website? Welche Informationen könnten durch Dumping-Backtraces verloren gehen?

Wenn man all das liest, kann man allgemein sagen, dass es nicht ratsam ist, den Entwicklermodus auf einem Produktionsserver "als Faustregel" zu aktivieren;).

Aber ist es per se eine "schlechte Sache"? ...


Ich würde sagen, Nummer 4 (und auch 1) macht es zu einer schlechten Sache, ohne Wenn und Aber, einfach aus Sicherheitsgründen.
Fabian Schmengler

Wie kann ich den Entwicklermodus nur für meine IP-Adresse aktivieren?
Zus

3

Es ist too harmful to enable developer mode on a production serverweil jemand can see your site's errors and system folder path . Viel System details are printed to the browser screen und das macht esvery harmful for your site.

Es wird eine gute Idee sein enable for developer code for specific ips.Just putting condition at index.php

$clientIp = $_SERVER['REMOTE_ADDR'];

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) && ($clientIp == '123.123.123.123')) {
    Mage::setIsDeveloperMode(true);
} 

Dies würde den Entwicklermodus nur für die IP eines Entwicklers aktivieren.

Nachteil des Enable-Entwicklers

Kundenverkehr: Kunden werden irritate because of site print Errorund don't goto not any next page.Das macht die Absprungrate der Website hoch.

Geschäft: für Websites mit hoher Absprungrate Business goes to down.

Site-Geschwindigkeit: Site wird slow for every timeprotokolliert printed on system.log and exception.log.

Lösung

Die Lösung ist stage serverIch schlage vor

1. erstellen: create stage

2. Dev Mode: Aktivieren all developer mode auf dem Bühnensystem.

  1. Fehler beheben : Überprüfen Sie die Fehler und beheben Sie den Code

  2. Produktion hochladen : Laden Sie dann den Fixcode auf den Produktserver hoch.


Danke Amit. Leider funktionieren alle südafrikanischen Netzwerke über dynamische IP-Adressen (die sich normalerweise täglich ändern) im Gegensatz zu statischen IP-Adressen (die konstant sind).
Elch

1
@moose, Sie könnten versuchen, das $clientIpmit einem Array ( in_array($clientIp, array(/* IP's */))) abzugleichen, oder Sie könnten versuchen, einen bestimmten Teil der IP mit einer Bitmaske abzugleichen. Dies ist kein Thema für diese SE und etwas zu weit gefasst für diesen Kommentar. Versuchen Sie also, dies bei Google zu tun.
7ochem

2
7ochem, du bist eine gute Rechtschreibprüfung :)
Amit Bera

0

Es ist einfach falsch, die gesamte Online-Literatur zu diesem Thema befasst sich mit der Bearbeitung der Datei index.php um "if (isset ($ _ SERVER ['MAGE_IS_DEVELOPER_MODE']) ...", während Magento in der Datei info: "empfiehlt. * Bearbeiten oder ergänzen Sie diese Datei nicht, wenn Sie Magento auf eine neuere Version aktualisieren möchten. "

Die einfache Antwort lautet, dass Sie den Wert von $ _SERVER ['MAGE_IS_DEVELOPER_MODE'] als Apache- oder Nginx-Direktive festlegen müssen oder nicht.

Fügen Sie für Apache diese Zeile in die Root-Datei .htaccess ein, wenn Sie den Entwicklermodus möchten: SetEnv MAGE_IS_DEVELOPER_MODE true

Bearbeiten Sie für nginx diese Zeile in der Datei nginx.conf, wenn Sie den Entwicklermodus wünschen: Setzen Sie $ MAGE_MODE default; # oder Produktion oder Entwickler

( https://github.com/magento/magento2/blob/2.3-develop/nginx.conf.sample )

Die Datei root index.php ist eine Framework-Kerndatei und muss unberührt bleiben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.