У меня есть сервер Linux с кучей разных сайтов на нем. Когда я программирую веб-сайты, я буду разрабатывать их локально и настраивать APPLICATION_ENV на разработку. На моем сервере у меня есть промежуточная настройка субдомена, для которой я установил APPLICATION_ENV в промежуточное состояние. Наконец, если я в конечном итоге размещу производственный веб-сайт, я могу настроить APPLICATION_ENV на производственный. Все это прекрасно работает, но в последнее время я выполняю задачи CLI после каждого развертывания. Мои сценарии командной строки, очевидно, ничего не могут сделать с переменной APPLICATION_ENV, которую я установил через Apache. Я знаю, что вы можете экспортировать переменную так:
export APPLICATION_ENV = «подготовка»
Тем не менее, это будет установка его на весь мой сервер, когда я действительно хочу установить его только на промежуточном поддомене. Есть ли способ содержать эти переменные в поддомен на моем сервере?
Для названия вашего вопроса:
if (PHP_SAPI == 'cli') {
echo 'This is CLI mode!' . PHP_EOL;
var_dump($argv);
}
Для описания:
Я думаю, что вы можете установить значение APPLICATION_ENV с помощью аргументов или установить его (в исходном коде) в качестве внутреннего режима CLI APP ENV.
Нет ничего плохого в том, чтобы иметь переменные среды для всего сервера, так как вы можете установить их только для конкретного пользователя (или даже сеанса).
В любом случае, вероятно, самый простой способ — передать «env» в качестве параметра, например: cli.php --env=staging
Посмотрите, как они решили это в Laravel: https://laravel.com/docs/4.2/artisan
Указание среды конфигурации
Вы можете указать конфигурационную среду, которая должна использоваться
во время выполнения команды с помощью ключа —env:
php artisan migrate --env=local
Symfony: http://symfony.com/doc/current/cookbook/console/usage.html
$ php bin/console cache:clear --env=prod