Laravel 4.1+中的环境检测

Sim*_*son 6 php laravel

Laravel 4.1删除了使用域来检测应用程序运行环境的功能.阅读他们现在建议使用主机名的文档.但是,对我来说,如果你在一个团队中工作,这似乎很麻烦.每个人都应该更改bootstrap/start.php文件并添加自己的主机名,以便能够在开发环境中运行应用程序吗?另外,如果您想在同一台机器上拥有两个不同的环境,该怎么办?

如果您在Laravel 4.1+团队中工作,如何最好地检测环境?

car*_*sel 14

这是我在bootstrap/start.php文件中的设置:

$env = $app->detectEnvironment(function() use($app) {
    return getenv('ENV') ?: ($app->runningInConsole() ? 'local' : 'production');
});
Run Code Online (Sandbox Code Playgroud)

在我的例子中,这个方法不是默认数组,而是使用三元返回闭包.这样我就可以更灵活地选择理想的环境.您也可以使用switch语句.Laravel将读取返回值并自行配置.使用getenv本机功能,我只是在听一个给定的环境.如果我的应用程序在服务器上,那么它将"选择"服务器配置.如果在本地,那么它将选择本地(或开发)并且不要忘记为app/config中的 environemnts创建自定义目录 还有测试env,每次你是单元测试应用程序时自动选择.

Laravel使环境工作变得非常有趣.

更新:

在环境中,我们主要关注数据库凭据.

对于生产我使用Fortrabbit,所以在服务器上配置新的应用程序时,fortrabbit正在为我生成这些值.我只需要声明它们.例如,数据库或数据库的DB ...或者DB_HOST或HOST ......在本地,这些值是您用于localhost/mysql设置的值.