Режим разработчика в производственной среде
Недавно со мной связался клиент, чтобы оценить их магазин 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, когда что-то пойдет не так
Мне кажется довольно позитивным. Как правило, я раньше просто не подвергал производству среда в режим разработчика.
3 answers
Большинство разработчиков, как правило, сразу же отвечают, что это плохо, когда на рабочем сервере включен режим разработчика, как будто это истинный факт. Я думаю, что это отличается в зависимости от ситуации/интернет-магазина.
Что происходит, когда вы включаете режим разработчика?
-
mageCoreErrorHandler()
выдаст все ошибки вместо того, чтобы регистрировать их - Magento будет выдавать ошибки в определенных ситуациях, когда он обычно молча игнорирует эту ошибку и продолжает
-
Mage::log()
всегда будет писать для входа в систему, даже если ведение журнала отключено - При печати исключений на экране будет отображаться трассировка кода вместо страницы отчета об ошибке
- Другие незначительные вещи в игнорировании пропуска обновлений модулей, кэш корпоративных страниц, ....
Это плохо на рабочем сервере?
- Посетители вашего сайта могут в конечном итоге столкнуться со всевозможной тарабарщиной, которая может сбить их с толку и, следовательно, может оказать негативное влияние на конверсию ваших сайтов
- См. № 1
- На рабочий сервер у вас, скорее всего, будет намного больше просмотров страниц, чем на тестовом сервере. Это может означать, что если у вас включено ведение журнала (или включен режим разработчика), ваши журналы могут быть затоплены.
- Это тот, который может быть вредным . Если ваши трассировки исключений будут напечатаны, то они могут содержать конкретную информацию, которая может быть ценной для людей с плохими намерениями.
- ...
По этим 5 пунктам я мог бы сказать, что они сильно зависят от ситуация на вашем живом веб-сайте. Какова ваша аудитория? Они пугаются и убегают, когда видят исключения и трассировки PHP? Сколько просмотров страниц имеет ваш сайт? Какая информация может быть утечена с обратными следами сброса?
Читая все вышесказанное, в целом можно сказать, что не рекомендуется включать режим разработчика на рабочем сервере "как правило";).
.Но разве это "плохо" само по себе? ...
Это 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 scree
n, и это делает его 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 serve
r.Я предлагаю
1. создать: create stage
2. Режим разработки: включить all developer mode
в системе stage.
Исправить ошибку: Проверьте ошибки и исправьте код
Загрузить производство: затем загрузите код исправления на сервер продукта.
Это просто неправильно, вся онлайн-литература по этой теме посвящена тому, как редактировать 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 файл является основным файлом фреймворка и должен оставаться нетронутым.