Обработка нескольких сред
Разработчики часто желают различного поведения системы в зависимости от того, работает ли приложение в среде разработки или производства. Например, подробный вывод ошибок полезен во время разработки приложения, но может также представлять собой проблему безопасности в «живом» режиме. В средах разработки вы можете загружать дополнительные инструменты, которых нет в средах производства, и т. д.
Константа ENVIRONMENT
По умолчанию CodeIgniter поставляется с константой среды, установленной на значение, предоставленное в $_SERVER['CI_ENVIRONMENT'], в противном случае по умолчанию установлено значение ‘production’. Это можно задать несколькими способами в зависимости от конфигурации вашего сервера.
Примечание
Среда testing является специальной для тестирования PHPUnit. В рамках фреймворка в различных местах реализованы специальные условия, которые помогают в этом. Вы не можете использовать её для разработки.
.env
Самый простой способ установить переменную — в файле .env.
CI_ENVIRONMENT = development
Apache
Эту переменную сервера можно установить в файле .htaccess или конфигурации Apache, используя SetEnv.
SetEnv CI_ENVIRONMENT development
nginx
В nginx необходимо передать переменную среды через fastcgi_params, чтобы она отобразилась в переменной $_SERVER. Это позволяет ей работать на уровне виртуального хоста, вместо использования env для настройки на всем сервере, хотя это прекрасно работает на выделенном сервере. Затем вы измените конфигурацию сервера на что-то вроде:
server {
server_name localhost;
include conf/defaults.conf;
root /var/www;
location ~* \.php$ {
fastcgi_param CI_ENVIRONMENT "production";
include conf/fastcgi-php.conf;
}
}
Доступны альтернативные методы для nginx и других серверов, или вы можете полностью убрать эту логику и установить константу на основе IP-адреса сервера (например).
Помимо влияния на некоторые основные функции фреймворка (см. следующую секцию), вы можете использовать эту константу в собственной разработке для различения сред, в которых вы работаете.
Файлы загрузки
CodeIgniter требует, чтобы скрипт PHP, соответствующий имени среды, находился в папке APPPATH/Config/Boot. Эти файлы могут содержать любые пользовательские настройки, которые вы хотите сделать для вашей среды, будь то обновление параметров отображения ошибок, загрузка дополнительных инструментов разработчика или что-либо еще. Они автоматически загружаются системой. В свежем проекте уже созданы следующие файлы:
- development.php
- production.php
- testing.php
Влияние на поведение фреймворка по умолчанию
В системе CodeIgniter есть места, где используется константа ENVIRONMENT. Этот раздел описывает, как это влияет на поведение фреймворка по умолчанию.
Отчет об ошибках
Установка константы ENVIRONMENT в значение ‘development’ приведет к отображению всех ошибок PHP в браузере при их возникновении. И наоборот, установка константы в ‘production’ отключит вывод всех ошибок. Отключение отчетов об ошибках в рабочей среде — это хорошая практика безопасности.
Файлы конфигурации
По желанию вы можете заставить CodeIgniter загружать файлы конфигурации, специфичные для среды. Это может быть полезно для управления такими вещами, как различные API-ключи в разных средах. Подробнее об этом рассказано в разделе «Обработка различных сред» документации Работа с файлами конфигурации.
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/general/environments.html