1

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

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

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

4

1 回答 1

0

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

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

或通过辅助门面

$environment = App::environment();

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


如果你喜欢使用homestead.yaml环境变量而不是start.phplaravel 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

于 2015-02-13T11:26:00.623 回答