Laravel 4.1, настраивающий несколько сред для веба и Терминал

Хорошо, я получаю мульти-среды от Laravel Docs.

Вот мои настройки:

  • местная среда
  • промежуточная серверная среда
  • производственный сервер

Очевидно, что локальная среда имеет имя хоста, отличное от рабочего сервера, однако промежуточный сервер является поддоменом на рабочем сервере (поэтому dev.myapp.com против myapp.com). Я также использую myapp.dev как мое виртуальное имя хоста локально.

Я установил следующее, чтобы переключить среду:

$env = $app->detectEnvironment(function(){

if(strpos($_SERVER['HTTP_HOST'],'.dev') !== false) || strpos($_SERVER['HTTP_HOST'],'dev.') !== false) {
return 'local';
}
return 'production';

});

это почти работает. Проблема в том, что у меня есть отдельная настройка базы данных для моих сред разработки / размещения, чтобы мы не отображали и не манипулировали живыми данными в промежуточной среде. Это падает в терминале. Когда я бегу php artisan env (после предупреждения о $_SERVER['HTTP_HOST'] не устанавливается) показывается как производство.

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

Что может быть лучше для ссылки на это?

1

Решение

php artisan --env=staging

это то, что вам нужно, и добавить isset($_SERVER['HTTP_HOST']) к коду обнаружения, в противном случае Cli будет жаловаться.

3

Другие решения

Не уверен, что вы попробовали это, но я бы использовал имя хоста вместо домена. На вашем промежуточном сервере, используя ваш тип CLI hostname и он скажет вам имя хоста вашего сервера.

Вы можете добавить это в bootstrap / start.php

$env = $app->detectEnvironment(array(

'local' => array('homestead'), // Change this to your local machine hostname.
'staging' => array('staging_hostame'), // staging server
'production' => array('your-production-machine-name'),

));

Позвольте мне сейчас, если вам нужна дополнительная помощь по этому вопросу 🙂

-1

По вопросам рекламы [email protected]