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.php
Datei 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.
Antworten:
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?
mageCoreErrorHandler()
wirft alle Fehler, anstatt sie zu protokollierenMage::log()
schreibt immer in das Protokoll, auch wenn die Protokollierung deaktiviert istIst das schlecht auf einem Produktionsserver?
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"? ...
quelle
Es ist
too harmful to enable developer mode on a production server
weil jemandcan see your site's errors and system folder path
. Viel Systemdetails are printed to the browser scree
n 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
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 Error
unddon'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 time
protokolliertprinted on system.log and exception.log
.Lösung
Die Lösung ist
stage serve
rIch schlage vor1. erstellen:
create stage
2. Dev Mode: Aktivieren
all developer mode
auf dem Bühnensystem.Fehler beheben : Überprüfen Sie die Fehler und beheben Sie den Code
Produktion hochladen : Laden Sie dann den Fixcode auf den Produktserver hoch.
quelle
$clientIp
mit 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.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.
quelle