Path to local settings php

Path to local settings php

Информация на странице актуальна для Drupal 8. Вы можете ознакомиться с вариантом для Drupal 9.

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. Когда обнаружена проблема, запрос будет провален и выдана ошибка.

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

Если вы используете PHP 7.0 или выше, то рекомендуется установить настройку zend.assertions=1 в php.ini файле (данную настройку нельзя задавать через .htaccess или ini_set() ). На продакшен сайте убедитесь что данная опция отключена.

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';

¶Кеш миграций

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

Это поведение влияет только на официальный способ создания миграций (те что создаются в /MODULENAME/migrations ). Если вы используете Migrate Plus который проксирует миграции, данная настройка не окажет никакого влияния.

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

¶Кеш страниц

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

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

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

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

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

Вы должны проверять работоспособность сайта и его функционала с включенным 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 .

Вы можете использовать команду Drush drush cache:rebuild для полного ребилда кеша. Она будет работать даже с отключенной опцией.

$settings['rebuild_access'] = TRUE;

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

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

$settings['skip_permissions_hardening'] = TRUE;

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

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

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

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

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

Источник

Path to local settings php

The configuration file ( php.ini ) is read when PHP starts up. For the server module versions of PHP, this happens only once when the web server is started. For the CGI and CLI versions, it happens on every invocation.

  • SAPI module specific location ( PHPIniDir directive in Apache 2, -c command line option in CGI and CLI)
  • The PHPRC environment variable.
  • The location of the php.ini file can be set for different versions of PHP. The root of the registry keys depends on 32- or 64-bitness of the installed OS and PHP. For 32-bit PHP on a 32-bit OS or a 64-bit PHP on a 64-bit OS use [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP] for 32-bit version of PHP on a 64-bit OS use [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP] ] instead. For same bitness installation the following registry keys are examined in order: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z] , [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] and [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x] , where x, y and z mean the PHP major, minor and release versions. For 32 bit versions of PHP on a 64 bit OS the following registry keys are examined in order: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z] , [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] and [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x] , where x, y and z mean the PHP major, minor and release versions. If there is a value for IniFilePath in any of these keys, the first one found will be used as the location of the php.ini (Windows only).
  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] or [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP] , value of IniFilePath (Windows only).
  • Current working directory (except CLI).
  • The web server’s directory (for SAPI modules), or directory of PHP (otherwise in Windows).
  • Windows directory ( C:\windows or C:\winnt ) (for Windows), or —with-config-file-path compile time option.

If php-SAPI.ini exists (where SAPI is the SAPI in use, so, for example, php-cli.ini or php-apache.ini ), it is used instead of php.ini . The SAPI name can be determined with php_sapi_name() .

Note:

The Apache web server changes the directory to root at startup, causing PHP to attempt to read php.ini from the root filesystem if it exists.

Using environment variables can be used in php.ini as shown below.

Example #1 php.ini Environment Variables

; PHP_MEMORY_LIMIT is taken from environment memory_limit = $

The php.ini directives handled by extensions are documented on the respective pages of the extensions themselves. A list of the core directives is available in the appendix. Not all PHP directives are necessarily documented in this manual: for a complete list of directives available in your PHP version, please read your well commented php.ini file. Alternatively, you may find » the latest php.ini from Git helpful too.

Example #2 php.ini example

; any text on a line after an unquoted semicolon (;) is ignored [php] ; section markers (text within square brackets) are also ignored ; Boolean values can be set to either: ; true, on, yes ; or false, off, no, none register_globals = off track_errors = yes ; you can enclose strings in double-quotes include_path = ".:/usr/local/lib/php" ; backslashes are treated the same as any other character include_path = ".;c:\php\lib"

It is possible to refer to existing .ini variables from within .ini files. Example: open_basedir = $ «:/new/dir» .

Scan directories

It is possible to configure PHP to scan for .ini files in a directory after reading php.ini . This can be done at compile time by setting the —with-config-file-scan-dir option. The scan directory can then be overridden at run time by setting the PHP_INI_SCAN_DIR environment variable.

It is possible to scan multiple directories by separating them with the platform-specific path separator ( ; on Windows, NetWare and RISC OS; : on all other platforms; the value PHP is using is available as the PATH_SEPARATOR constant). If a blank directory is given in PHP_INI_SCAN_DIR , PHP will also scan the directory given at compile time via —with-config-file-scan-dir.

Within each directory, PHP will scan all files ending in .ini in alphabetical order. A list of the files that were loaded, and in what order, is available by calling php_ini_scanned_files() , or by running PHP with the —ini option.

Assuming PHP is configured with --with-config-file-scan-dir=/etc/php.d, and that the path separator is . $ php PHP will load all files in /etc/php.d/*.ini as configuration files. $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php PHP will load all files in /usr/local/etc/php.d/*.ini as configuration files. $ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php PHP will load all files in /etc/php.d/*.ini, then /usr/local/etc/php.d/*.ini as configuration files. $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php PHP will load all files in /usr/local/etc/php.d/*.ini, then /etc/php.d/*.ini as configuration files.

Источник

Читайте также:  Php принудительное завершение скрипта
Оцените статью