Главная

Настройка локального окружения в Drupal

07-05-2025

Настройка локального окружения в Drupal

При разработке на Drupal важно отделить рабочие настройки от локальных. Это особенно удобно, если вы используете кэш, агрегируете CSS/JS и работаете с шаблонами Twig. В этой статье покажу, как настроить локальное окружение с помощью файлов settings.local.php и services.local.yml.

1. Создание файлов и права доступа

В папке web/sites/default по умолчанию часто установлены строгие права доступа. Чтобы создать файлы, выполните:

cd web/sites/default
chmod u+w .
touch settings.local.php
touch services.local.yml
chmod a-w .

2. Содержимое settings.local.php

Пример базовой конфигурации:

<?php
$databases['default']['default'] = [
  'database' => 'имя_базы',
  'username' => 'пользователь',
  'password' => 'пароль',
  'host' => 'localhost',
  'port' => '3306',
  'driver' => 'mysql',
  'charset' => 'utf8mb4',
  'collation' => 'utf8mb4_unicode_ci',
  'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
  'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql',
  'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
];
$config['system.logging']['error_level'] = 'verbose';
$settings['twig_debug'] = TRUE;
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['page'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
$config['system.performance']['css']['preprocess'] = FALSE;
$config['system.performance']['js']['preprocess'] = FALSE;
$settings['skip_permissions_hardening'] = TRUE;
$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.local.yml';

Примечание: параметр 'unix_socket' указывается только при работе с MAMP на macOS. В других средах он не требуется и может быть опущен.

3. Подключение файла в settings.php

В settings.php в самом низу есть такая строка которую надо расскоментировать:

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

Важно: этот блок можно оставить как есть на продакшене. Если файла settings.local.php нет — Drupal его просто проигнорирует. Отключать ничего не нужно. Но если вы полностью на рабочий сервер перенесли архив сайта, то либо эту строку надо закоментировать либо удалить эти два файла локальной разработки с рабочего сервера.

4. Содержимое services.local.yml

parameters:
  http.response.debug_cacheability_headers: true
  twig.config:
    debug: true
    auto_reload: true
    cache: false
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory

5. Игнорирование в Git

Добавьте в .gitignore:

/web/sites/*/settings.local.php
/web/sites/*/services.local.yml

6. Результат

  • Twig-кэш отключён, отладка включена
  • Все кэши отключены
  • CSS/JS не агрегируются
  • Конфигурация не попадёт на сервер

Теперь вы можете спокойно разрабатывать проект в локальной среде с полной изоляцией от боевых настроек и без лишней головной боли.

Похожие статьи