Режим разработчика в производственной среде


Недавно со мной связался клиент, чтобы оценить их магазин Magento. Я понял, что в магазине (несмотря на то, что он работает в рабочем режиме) был включен режим разработчика в их файле index.php:

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

Они запускают этот магазин в производство уже более 2 лет. Я восстановил самую раннюю версию файла, которая была выпущена в 2013-02-09 годах, и в нем все еще для режима разработчика было установлено значение true.

После прочтения этой статьи Алана Шторма: Обработка ошибок PHP и режим разработчика Magento Я действительно не могу придумать причину, по которой можно было бы рекомендовать, чтобы клиент отключил режим разработчика.

Существуют ли какие-либо негативные аспекты включения ИТ в производство?

Подведение итогов Алана Шторма:

Режим разработчика поможет вам написать более чистый код, не подвергая ваших пользователей неудобным ошибкам PHP, когда что-то пойдет не так

Мне кажется довольно позитивным. Как правило, я раньше просто не подвергал производству среда в режим разработчика.

Author: Teja Bhagavan Kollepara, 2015-04-01

3 answers

Большинство разработчиков, как правило, сразу же отвечают, что это плохо, когда на рабочем сервере включен режим разработчика, как будто это истинный факт. Я думаю, что это отличается в зависимости от ситуации/интернет-магазина.

Что происходит, когда вы включаете режим разработчика?

  1. mageCoreErrorHandler() выдаст все ошибки вместо того, чтобы регистрировать их
  2. Magento будет выдавать ошибки в определенных ситуациях, когда он обычно молча игнорирует эту ошибку и продолжает
  3. Mage::log() всегда будет писать для входа в систему, даже если ведение журнала отключено
  4. При печати исключений на экране будет отображаться трассировка кода вместо страницы отчета об ошибке
  5. Другие незначительные вещи в игнорировании пропуска обновлений модулей, кэш корпоративных страниц, ....

Это плохо на рабочем сервере?

  1. Посетители вашего сайта могут в конечном итоге столкнуться со всевозможной тарабарщиной, которая может сбить их с толку и, следовательно, может оказать негативное влияние на конверсию ваших сайтов
  2. См. № 1
  3. На рабочий сервер у вас, скорее всего, будет намного больше просмотров страниц, чем на тестовом сервере. Это может означать, что если у вас включено ведение журнала (или включен режим разработчика), ваши журналы могут быть затоплены.
  4. Это тот, который может быть вредным . Если ваши трассировки исключений будут напечатаны, то они могут содержать конкретную информацию, которая может быть ценной для людей с плохими намерениями.
  5. ...

По этим 5 пунктам я мог бы сказать, что они сильно зависят от ситуация на вашем живом веб-сайте. Какова ваша аудитория? Они пугаются и убегают, когда видят исключения и трассировки PHP? Сколько просмотров страниц имеет ваш сайт? Какая информация может быть утечена с обратными следами сброса?

Читая все вышесказанное, в целом можно сказать, что не рекомендуется включать режим разработчика на рабочем сервере "как правило";).

.

Но разве это "плохо" само по себе? ...

 8
Author: 7ochem, 2015-04-01 08:37:06

Это 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 Error и don't goto not any next page.Это делает показатель отказов сайта высоким.

Бизнес: для сайта с высоким показателем отказов Business goes to down.

Скорость сайта: сайт стать slow for every time журналом printed on system.log and exception.log.

Решение

Решение stage server.Я предлагаю

1. создать: create stage

2. Режим разработки: включить all developer mode в системе stage.

  1. Исправить ошибку: Проверьте ошибки и исправьте код

  2. Загрузить производство: затем загрузите код исправления на сервер продукта.

 3
Author: Amit Bera, 2015-04-01 20:42:15

Это просто неправильно, вся онлайн-литература по этой теме посвящена тому, как редактировать index.php файл вокруг строки "если (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])...", в то время как в информации о файле Magento рекомендует: "*Не редактируйте и не добавляйте в этот файл, если вы хотите обновить Magento до более новой..."

Простой ответ заключается в том, что вы должны установить или нет значение $_SERVER['MAGE_IS_DEVELOPER_MODE'] в качестве директивы apache или nginx.

Для apache добавьте эту строку в файл root.htaccess, если вы хотите режим разработчика: Установите значение параметра MAGE_IS_DEVELOPER_MODE true

Для nginx отредактируйте эту строку в файле nginx.conf, если вам нужен режим разработчика: установите $MAGE_MODE по умолчанию; # или производство или разработчик

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

Корень index.php файл является основным файлом фреймворка и должен оставаться нетронутым.

 0
Author: Vio, 2019-08-23 17:00:17