本番環境の開発者モード


7

最近、クライアントからMagentoストアの評価について連絡を受けました。ストア(本番環境で実行されている場合でも)のindex.phpファイルで開発者モードが有効になっていることに気付きました。

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

彼らはこの店を2年以上生産に携わってきました。2013-02-09からのファイルの最も古いリビジョンを復元しましたが、まだ開発者モードがtrueに設定されていました。

Alan Stormによるこの記事を読んだ後:PHPのエラー処理とMagento開発者モードクライアントが開発者モードを無効にすることを推奨する理由を本当に考えることはできません。

本番環境で有効にすることの有害な側面はありますか?

アランストームのまとめ:

開発者モードは、問題が発生したときにユーザーに厄介なPHPエラーを与えることなく、よりクリーンなコードを作成するのに役立ちます

私にとってはかなり前向きなようです。経験則として、私は以前、本番環境を開発者モードにすることはありませんでした。


3
プロダクションモードでは、開発者モードをオフにする必要があります。そうでない場合、小さなphp通知エラーもフロントエンドで表示されます。開発者モードがオフの場合、ユーザーの正面のエラーはフロントエンドにのみ表示され、詳細なphpエラー/通知/警告がログに記録されます。
Rajeev K Tomy

2
ここに何か不足している可能性がありますが、リストしたものはindex.phpのデフォルトのコアMagentoにあります。もちろん、このファイルの以前のバージョンには、同じコードブロックが含まれています。開発者モードをオン(デフォルトではオフ)にする「IF」ステートメントが表示されています。実際には、vhostレベルまたは.htaccess内で環境変数が設定されていますか?$ _SERVER変数が設定されていない場合、開発者モードは有効になっていません...
Douglas Radburn

あ、ごめんなさい:)変数が設定されました。
ムース

回答:


8

ほとんどの開発者は、本当の事実であるかのように、本番サーバーで開発者モードをオンにすることは悪いことであるとすぐに回答する傾向があります。これは状況やウェブショップごとに異なると思います。

開発者モードをオンにするとどうなりますか?

  1. mageCoreErrorHandler() ログに記録するのではなく、すべてのエラーをスローします
  2. Magentoは通常、このエラーを無視して続行する特定の状況でエラーをスローします
  3. Mage::log() ログがオフになっている場合でも、常にログに書き込みます
  4. 例外印刷では、エラーレポートページではなく、コードトレースが画面に表示されます。
  5. モジュールの更新のスキップ、エンタープライズページキャッシュなどを無視するその他のマイナーなこと。

これは本番サーバーでは問題ですか?

  1. あなたのウェブサイトの訪問者は最終的にそれらを混乱させる可能性があるあらゆる種類の意味不明なものになり、そのためあなたのウェブサイトのコンバージョンに悪影響を与える可能性があります
  2. いいえ。1
  3. 運用サーバーでは、テストサーバーよりも多くのページビューを使用する可能性が高くなります。これは、ロギングをオン(または開発者モードをオン)にすると、ログがフラッディングする可能性があることを意味します。
  4. これは有害である可能性があるものです。例外トレースが出力される場合、それらに、悪意のある人々にとって価値のある特定の情報含まれている可能性があります。
  5. ...

これらの5つの点で、ライブウェブサイトの状況に大きく依存していると言えるでしょう。あなたの聴衆は何ですか?PHPの例外とトレースを見ると、彼らは怯えて逃げますか?あなたのサイトにはいくつのページビューがありますか?バックトレースをダンプするとどの情報が漏洩する可能性がありますか?

上記のすべてを読んだとき、「経験則」として本番サーバーで開発者モードをオンにすることはお勧めできません;)

しかし、それ自体が「悪いこと」なのでしょうか。...


確かに、セキュリティ上の理由から、4番(および1番)は、ifsとbutsなしでは、悪いことです。
Fabian Schmengler、2016

自分のIPアドレスに対してのみ開発者モードを有効にするにはどうすればよいですか?
zus

3

それはあるtoo harmful to enable developer mode on a production serverので、だれでも can see your site's errors and system folder path。多くのシステムdetails are printed to the browser screenとそれはそれを作りますvery harmful for your site.

それは良いアイデアになります 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);
} 

これにより、開発者のIPに対してのみ開発者モードが有効になります。

開発者を有効にすることの欠点

顧客のトラフィック:顧客はirritate because of site print Errordon't goto not any next pageサイトの直帰率を高くします。

ビジネス:直帰率の高いサイト向けBusiness goes to down

サイトの速度:サイトはslow for every timeログになりますprinted on system.log and exception.log

解決

解決策はstage serve私が提案している

1. 作成: create stage

2. 開発モード:all developer mode ステージシステムで有効にします。

  1. エラーの修正:エラーを確認し、コードを修正します

  2. 製品をアップロード次に、修正コードを製品サーバーにアップロードします。


アミットありがとう。残念ながら、すべての南アフリカのネットワークは、静的IPアドレス(一定)とは対照的に、動的IPアドレス(通常は毎日変更されます)を介して機能します。
ムース

1
@moose、$clientIp配列(in_array($clientIp, array(/* IP's */)))と一致させるか、ビットマスクでIPの特定の部分を一致させることができます。これはこのSEのトピックから外れており、このコメントには少し広すぎるので、Googleで試してみてください。
7ochem

2
7ochem、あなたは優れたスペルチェッカーです:)
Amit Bera

0

間違いです。このトピックに関するすべてのオンライン資料は、index.phpファイルを編集する方法に関するものです。 * Magentoを新しいものにアップグレードする場合は、このファイルを編集または追加しないでください。

単純な答えは、$ _ SERVER ['MAGE_IS_DEVELOPER_MODE']の値をapacheまたはnginxディレクティブとして設定する必要があるかどうかです。

Apacheの場合、開発者モードが必要な場合は、ルートの.htaccessファイルに次の行を追加します。SetEnv MAGE_IS_DEVELOPER_MODE true

nginxで開発者モードが必要な場合は、nginx.confでこの行を編集します。$ MAGE_MODEのデフォルトを設定します。#またはプロダクションまたは開発者

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

ルートindex.phpファイルはフレームワークのコアファイルであり、変更しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.