【问题标题】:Laravel 4.2 - Environment detection - homestead.yaml vs. start.phpLaravel 4.2 - 环境检测 - homestead.yaml 与 start.php
【发布时间】:2015-03-29 02:40:37
【问题描述】:

宅基地版本: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”,它会显示“本地”,如果我 ssh 进入我的宅基地并运行“php artisan env”,它会显示“生产”,这正是我所期望的。 (我只是将“生产”放在那里以测试返回的值)。

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

我只是不知道何时使用每一个?如果在 start.php 文件中进行环境检测,APP_ENV 值的目的是什么,反之亦然?另外,我是否应该“本地”查找我的机器名称和宅基地框名称?因为我也不确定检测“宅基地”环境的意义。 (这是我第一次使用虚拟机,所以我确信我缺少一些东西)。

【问题讨论】:

    标签: laravel environment homestead


    【解决方案1】:

    在你的 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

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 2014-03-10
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多