Хорошо, я получаю мульти-среды от 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']
не устанавливается) показывается как производство.
Это означает, что он не будет запускать миграции на правильную базу данных через терминал.
Что может быть лучше для ссылки на это?
php artisan --env=staging
это то, что вам нужно, и добавить isset($_SERVER['HTTP_HOST'])
к коду обнаружения, в противном случае Cli будет жаловаться.
Не уверен, что вы попробовали это, но я бы использовал имя хоста вместо домена. На вашем промежуточном сервере, используя ваш тип 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'),
));
Позвольте мне сейчас, если вам нужна дополнительная помощь по этому вопросу 🙂