Laravel 4.2 - 环境检测 - homestead.yaml与s​​tart.php

时间:2015-01-29 18:34:36

标签: laravel environment homestead

Homestead版本:2.0.7

Laravel版本:4.2.16

我刚刚开始学习Laravel,我对使用start.php和homestead.yaml的环境配置之间的区别感到困惑。这就是我所拥有的:

start.php:

$env = $app->detectEnvironment(array(

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

));

homestead.yaml:

variables:
- key: APP_ENV
  value: testing123

如果我运行' php artisan env'在终端里,它说“本地”,如果我进入我的宅基地并运行“php artisan env”。它说' production'这就是我所期待的。 (我只是把生产'放在那里测试返回的值)。

如果我在hello.php中抛出<?php var_dump(getenv('APP_ENV')) ?>并刷新页面,它会显示&#39; testing123&#39;,这是homestead.yaml中APP_ENV的设置。

我只是想知道每个人的使用时间?如果在start.php文件中进行环境检测,APP_ENV值的目的是什么,反之亦然?另外,我应该有本地的&#39;寻找我的机器名称和宅基地名称?因为我也不确定是否能够发现“宅基地”。环境。 (这是我第一次使用VM的经历,所以我确定有一些我不知道的东西。)

1 个答案:

答案 0 :(得分:0)

在laravel应用程序中获取环境的唯一方法应该是

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

或通过帮手立面

$environment = App::environment();

这可确保您不会得到不同的结果。


如果您想使用homestead.yaml环境变量而不是laravel 4的标准start.php,可以在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