Laravel 4.2 — Обнаружение среды — homestead.yaml против start.php

Версия усадьбы: 2.0.7

Версия Laravel: 4.2.16

Я только начинаю изучать Laravel, и меня смущает разница между конфигурациями среды с помощью start.php и homestead.yaml. Вот что у меня есть:

старт.php:

$env = $app->detectEnvironment(array(

   'local' => array('josh-linux'),
   'production' => array('homestead')

));

усадьба.yaml:

variables:
- key: APP_ENV
  value: testing123

Если я запускаю «php artisan env» в терминале, он говорит «локальный», а если я подключаюсь по ssh к своей усадьбе и запускаю «php artisan env», он говорит «производство», чего я и ожидал. (Я просто добавил туда «производство», чтобы проверить возвращаемое значение).

Если я добавлю <?php var_dump(getenv('APP_ENV')) ?> в hello.php и обновлю страницу, она отобразит «testing123», что было настройкой для APP_ENV в homestead.yaml.

Меня просто смущает знание того, когда каждый из них используется? Какова цель значения APP_ENV, если определение среды выполняется в файле start.php, и наоборот? Кроме того, должен ли я иметь «локальный» поиск как для имени моей машины, так и для имени ящика усадьбы? Потому что я также не уверен в том, что нужно определять среду «усадьбы». (Это мой первый опыт работы с виртуальными машинами, поэтому я уверен, что мне чего-то не хватает).


person yankees13    schedule 29.01.2015    source источник


Ответы (1)


Единственный способ получить среду в вашем приложении laravel должен быть

$environment = app()->environment();

или через вспомогательный фасад

$environment = App::environment();

Это гарантирует, что вы не получите разные результаты.


Если вы хотите использовать переменную среды homestead.yaml вместо стандартной start.php из laravel 4, вы можете изменить ее на это в своем start.php:

$env = $app->detectEnvironment(function()
{
    return getenv('APP_ENV') ?: 'production';
});

Теперь он ищет переменную APP_ENV и, если не находит, по умолчанию принимает значение production.

Затем команда php artisan env должна выводить то же, что и App::environment();.

Примечание

Если вы переключаетесь между laravel 4.2 и 5.0, убедитесь, что вы помните, что техника окружения немного изменилась. Смотрите здесь для получения дополнительной информации:

Laravel 4.2: http://laravel.com/docs/4.2/configuration#environment-configuration
Laravel 5.0: http://laravel.com/docs/5.0/configuration#environment-configuration

person Pᴇʜ    schedule 13.02.2015