settings.local.php — локальные настройки окружения сайта

settings.local.php — файл с настройками локального окружения сайта. Является дополнением settings.php и использует все доступные его настройки.

Данный файл заменят, дополняет или выключает определённые настройки и поведение сайта для локальной системы. Используется при разработке проекта.

Создание файла

По умолчанию данный файл отсутствует. Для него поставляется стандартный пример example.settings.local.php который можно найти в директории /sites.

Для создания собственного файла достаточно скопировать example.settings.local.php в папку сайта, где уже находится основной settings.php и переименовать его в settings.local.php.

Подключение

Данный файл подключается из основного файлы settings.php. В конце этого файла вы можете найти следующие строки:

# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
#   include $app_root . '/' . $site_path . '/settings.local.php';
# }

Вам достаточно раскомментировать их и настройки из settings.local.php начнут загружаться и использоваться. Вы можете менять данное условие и поведение так как вам угодно. Данный файл должен подключаться в самом конце settings.php для того чтобы он мог изменять все основные настройки.

Применение

Файл settings.local.php применяется на локальных окружения в процессе разработки и заменяет некоторые настройки системы на специальные. Например, отключается кеширование, сжатие и объединение JavaScript и CSS файлов и прочие изменения необходимые для разработки, но не нужны на рабочем проекте.

Эти изменения производятся в settings.local.php для того чтобы эти настройки были явно отражены и было удобно переносить проект, делиться изменениями с командой и т.д.

Настройки по умолчанию

В данном разделе рассмотрены все настройки по умолчанию, который указаны в example.settings.local.php файле и подойдут для большинства проектов и задач.

Assertions

Drupal использует сравнения (assert), для того чтобы сообщать об ошибках использования API. Когда обнаружена проблема, запрос будет провален и выдана ошибка.

Данная настройка включает сравнения, которые по умолчанию отключены, чтобы в процессе разработки замечать ошибки на ранних стадиях.

Пример:

assert_options(ASSERT_ACTIVE, TRUE);
\Drupal\Component\Assertion\Handle::register();

Сервисы для разработки

В данном файле подключается файл development.services.yml с сервисами и параметрами для разработки, которые будут загружены в контейнер.

Пример:

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml'

Подробное логирование

Для конфигурации system.logging задаётся степень детализации ошибок на подробные (verbose). Это значит, что все ошибки будут выводиться, включая стэк вызова.

$config['system.logging']['error_level'] = 'verbose';

Агрегация JS и CSS

В конфигурации system.performance отключается обработка JavaScript и CSS файлов. Это значит что о ни не будут объединяться, сжиматься и кешироваться. Так вы сможете видеть изменения на сайте сразу после их внесения без необходимости сброса кеша.

$config['system.performance']['css']['preprocess'] = FALSE;
$config['system.performance']['js']['preprocess'] = FALSE;

Кеш рендера

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

При помощи данной настройки вы можете отключить кеширование результатов перенаправляя весь кеш в Null хранилище, который ничего не хранит.

Пример:

$settings['cache']['bins']['render'] = 'cache.backend.null';

Кеш миграций

Кеш миграций хранит в себе информацию о всех объявленных миграциях. Если вы активно пишите миграции, вы можете переключить хранение миграций в память, чтобы они обнаруживались сразу как только вы их объявляете.

Пример:

$settings['cache']['bins']['discovery_migration'] = 'cache.backend.memory';

Кеш страниц

Кеш страниц, который предоставляется модулем Internal Page Cache, хранит в себе готовые результаты страниц. В процессе активной разработки он может доставлять серьезные неудобства, поэтому его рекомендуется отключать.

$settings['cache']['bins']['page'] = 'cache.backend.null';

Динамический кеш страниц

Динамический кеш страниц, который предоставляется модулем Dynamic Page Cache, хранит в себе готовые результаты страниц, в зависимости от роли пользователя и прочих контекстов.

$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';

Включить обнаружение тестовых расширений

По умолчанию доступны только расширения (модули, темы оформления) которые не помечены как тестовые. При помощи данной настройки, вы можете включить их обнаружение и отображение в административном интерфейсе.

Пример:

$settings['extension_discovery_scan_tests'] = TRUE;

Доступ к ребилду

Drupal очень серьезно кеширует всю информацию что собирает. Даже с отключением различных кешей выше, он будет собираться. Например, информация о хуках, темплейтах, расширениях и т.д. кешируется даже в процессе разработки, так как оказывает серьезное влияние на производительность, а требуется нечасто.

Для того чтобы эти кеши были очищены нужно запустить ребилд системы. Для этого с Drupal поставляется файл rebuild.php, который не будет делать ничего, пока данная настройка отключена.

В процессе активной разработки вам потребуется регулярно запускать ребилд системы, поэтому данное поведение активируется. Для того чтобы запустить ребилд вам будет достаточно напрямую обратиться к файлу https://example.com/rebuild.php.

Пример:

$settings['rebuild_access'] = TRUE;

Отключение принудительного изменения прав на запись для директории сайта

По умолчанию Drupal регулярно проверяет важные директории и сбрасывает им права на запись. Это может вызвать неудобства в процессе разработки, поэтому данные проверки рекомендуется отключать.

$settings['skip_permissions_hardening'] = TRUE;

Смотрите также

  • settings.php — основные настройки окружения.

🌱 Помогите нам сделать документацию лучше!

Вся документация Druki с отрытым исходным кодом. Нашли ошибку или неточность? Создайте pull request.

Редактировать текущий документ Обсудить улучшение

Или узнайте как контрибутить.

🤔 По-прежнему нужна помощь?

Не нашли ответа на свой вопрос? Попросите помощи у сообщества!

Задайте вопрос на GitHub Смотрите другие ресурсы сообщества