2015-12-01 4 views
1

Как определить среду консольного приложения в Yii2? В веб-приложении это просто. Вам просто нужно добавить пользовательское объявление в конфигурацию Apache vhost, и все готово. Например:Yii2 определяющая среда консольного приложения

Виртуальные конфигурации хоста:

SetEnv APPLICATION_ENV production 

Yii2 записи сценарий:

$env = !empty($_SERVER['APPLICATION_ENV']) ? $_SERVER['APPLICATION_ENV'] : 'dev'; 

defined('YII_DEBUG') or define('YII_DEBUG', true); 
defined('YII_ENV') or define('YII_ENV', $env); 

У меня есть три среды: разработка, тестирование, производство. Итак, как мне настроить подходящую среду в консольном приложении? Поскольку каждая среда имеет определенную конфигурацию и т. Д.

Мое приложение основано на базовом шаблоне приложения.

+0

Вы можете просто изменить консоль ввода сценария: http://www.yiiframework.com/doc-2.0/guide-structure-entry-scripts.html#console-applications – soju

+0

Да, я знаю, что могу :) Но мне нужен какой-то идентификатор, определяющий текущую среду. В веб-приложении я могу установить такой идентификатор в конфигурации виртуальных хостов. – Bounce

+0

Ну, это не имеет никакого отношения к yii2, есть много способов сделать это. – soju

ответ

2

Если среда всегда должна быть одинаковой для всех консольных приложений, это хорошая идея, чтобы установить его в config/console.php. Просто добавьте что-то вроде

defined('YII_ENV') or define('YII_ENV', 'console'); 

Когда среда должна быть различна для разных машин, gethostname и switch - case будет представлять чистейший способ установить окружающую среду.

switch (gethostname()) { 
case "machine1": define('YII_ENV', "console-test"); break; 
// more case statements 
default: define('YII_ENV', "console"); 
3

У меня была такая же проблема несколько дней назад. Консольное приложение yii не может читать переменные среды из настроек VirtualHost.

Мое обходное решение - вызвать функцию php_uname(), чтобы получить полное имя операционной системы, на которой работает PHP, и использовать ее для дифференциации моей среды. Если три среды работают на трех разных (виртуальных) машинах, вы можете попробовать это.

php_uname doc

Смежные вопросы