Настройки и файл .env
Настройки — значения, от которых зависит работа сайта: его адрес, язык, доступ к базе данных. В CodeIgniter они хранятся в классах папки app/Config, по одному классу на тему. Значения, которые различаются на вашем компьютере и на сервере, переопределяют в файле .env.
Файлы настроек
| Файл | Что настраивает |
|---|---|
app/Config/App.php | Адрес сайта, язык, часовой пояс |
app/Config/Database.php | Подключение к базе данных |
app/Config/Routes.php | Маршруты |
app/Config/Filters.php | Фильтры запросов |
app/Config/Session.php | Сессии |
app/Config/Email.php | Отправку почты |
Каждая настройка — публичное свойство класса с комментарием над ним.
Чтение настройки
Объект настроек возвращает функция config():
// app/Controllers/Home.php
public function index(): string
{
return 'Адрес сайта: ' . config('App')->baseURL;
}Главная страница покажет «Адрес сайта: http://localhost:8080/». Аргумент — имя класса из app/Config.
Свой файл настроек
Собственные значения — число статей на странице, название блога — удобно держать в отдельном классе:
php spark make:config BlogКоманда создаёт файл app/Config/Blog.php. Добавьте в него свойства:
// app/Config/Blog.php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Blog extends BaseConfig
{
public string $name = 'Мой блог';
public int $perPage = 10;
}Теперь в любом месте проекта значение доступно как config('Blog')->perPage.
Переопределение в .env
Строка в .env заменяет значение свойства. Имя строки — имя класса строчными буквами, точка, имя свойства:
CI_ENVIRONMENT = development
app.baseURL = 'http://localhost:8080/'
blog.perPage = 5Сам файл app/Config/Blog.php при этом не меняется, но config('Blog')->perPage вернёт 5. Так один и тот же код работает с разными значениями на разных компьютерах.
Режимы работы
Строка CI_ENVIRONMENT задаёт режим:
| Режим | Когда используют |
|---|---|
development | На своём компьютере: подробные ошибки, панель отладки |
testing | При запуске автоматических тестов |
production | На рабочем сервере: ошибки скрыты от посетителей |
Если строки нет, действует production. Текущий режим печатает команда php spark env, в коде он доступен как константа ENVIRONMENT.
Частая ошибка
Файл .env содержит пароли и не должен попадать в репозиторий: в новом проекте он уже указан в .gitignore. Из-за этого на сервере его нет — после переноса проекта файл создают там вручную. Не пишите пароли в классах app/Config: эти файлы хранятся вместе с кодом и видны всем, у кого есть доступ к репозиторию.