dimayakovlev.ru


Запуск и настройка GetSimple CMS с использованием переменных окружения

Для запуска одной установленной копии GetSimple CMS со специфичными настройками, применяемыми в разных окружениях, можно каждый раз вручную редактировать файл настроек gsconfig.php или создать для каждого окружения свой вариант файла gsconfig.php и подменять им уже существующий. Нахожу оба варианта не удобными, поэтому предлагаю рассмотреть альтернативный способ с использованием переменной окружения (переменной среды).

Переменные окружения (Environment Variable) это текстовые переменные операционной системы, хранящие информацию о настройках системы и программ. В зависимости от операционной системы переменные окружения могут задаваться разными способами. Но важно, что их можно задать самостоятельно в рамках запущенной сессии командного интерпретатора. Заданные таким способом переменные перестанут существовать после завершения сессии, что и требуется для предлагаемого мною способа запуска и автоматической настройки GetSimple CMS.

Работа со встроенным веб-сервером PHP

Уже долгое время моим основным инструментом при локальной работе с веб-приложениями является встроенный веб-сервер PHP. Он не требует настройки и доступен для использования как в Windows, так и в Linux, сразу после установки PHP. И именно с ним использование переменных окружения особенно удобно.

Для примера предлагаю использовать переменную окружения с именем GS_CONFIG, установить ей значение debug, что будет соответствовать запуску GetSimple CMS в режиме отладки. Сразу после установки переменной запускается встроенный веб-сервер PHP, обрабатывающий запросы по адресу http://127.0.0.1:8000.

В зависимости от выбранной операционной системы и командного интерпретатора, переменная окружения устанавливается разными способами. Однако результат будет одинаковым.

Пример для командной строки Windows

set GS_CONFIG=debug
php -S 127.0.0.1:8000

Пример для PowerShell

Set-Item -Path Env:GS_CONFIG -Value debug
# или
# $Env:GS_CONFIG = 'debug'
php -S 127.0.0.1:8000

Пример для Bash

export GS_CONFIG=debug
php -S 127.0.0.1:8000

Если вы не хотите, чтобы переменная GS_CONFIG была доступна для дочерних процессов текущей сессии, её следует передать непосредственно PHP, без использования команды export.

GS_CONFIG=debug php -S 127.0.0.1:8000

Теперь, когда значение переменной окружения установлено, надо получить его в файле gsconfig.php и включить режим отладки GetSimple CMS. Делается это при помощи стандартной функции PHP getenv().

<?php
if (getenv('GS_CONFIG') == 'debug') {
  define('GSDEBUG', true);
}

Аналогично определяются остальные стандартные константы GetSimple CMS или задаются глобальные переменные.

Работа с веб-сервером Apache

Apache это основный веб-сервер, с которым работает GetSimple CMS. При его использовании рассмотренные варианты установки переменной окружения не подходят. Однако Apache имеет свой собственный механизм для работы с переменными окружения при помощи модуля mod_env.

Для получения аналогичного результата, как в случае использования встроенного веб-сервера PHP, в корневом файле .htaccess установите значение переменной GS_CONFIG. При этом PHP код в файле gsonfig.php остаётся без изменений.

SetEnv GS_CONFIG debug

Рассмотренный способ запуска и автоматической настройки GetSimple CMS в разных окружениях универсален. Переменные окружения и их значения могут использоваться не только в файле gsonfig.php, но и в коде компонентов, для включения и отключения плагинов, для отладки тем оформления и в других случаях локальной работы с системой управления контентом. Главное преимущество такого подхода состоит в отсутствии необходимости создавать копии установок системы управления контентом, файла настроек или ручного изменения настроек для каждого окружения.