Laravel 4.1 removed the feature使用域来检测应用程序运行的环境。阅读他们现在建议使用主机名的文档。但是,对我来说,如果您在团队中工作,这似乎很麻烦。每个人都应该更改 bootstrap/start.php
文件并添加自己的主机名以便能够在开发环境中运行该应用程序吗?另外,如果您想在同一台机器上拥有两个不同的环境怎么办?
如果您在 Laravel 4.1+ 团队中工作,如何最好地检测环境?
最佳答案
这是我在 bootstrap/start.php 文件中的设置:
$env = $app->detectEnvironment(function() use($app) {
return getenv('ENV') ?: ($app->runningInConsole() ? 'local' : 'production');
});
在我的例子中,这个方法不是默认数组,而是返回三元闭包。这样我就可以更灵活地选择所需的环境。您也可以使用 switch 语句。 Laravel 将读取返回值并自行配置。 使用 getenv native 函数,我只是在监听给定的环境。如果我的应用程序在服务器上,那么它将“选择”服务器配置。如果在本地,那么它将选择本地(或开发) 并且不要忘记在 app/config 中为您的环境创建自定义目录 还有测试环境,它是自动选择的,每次你对应用程序进行单元测试时。
Laravel 让处理环境变得非常有趣。
更新:
对于环境,我们主要关注数据库凭据。
对于生产,我使用 Fortrabbit,因此在服务器上配置新应用程序时,fortrabbit 会为我生成这些值。我只需要声明它们。例如DB 只是数据库或 db ... 或 DB_HOST 或 HOST ... 在本地,这些值是您用于本地主机/mysql 设置的值。
关于php - Laravel 4.1+ 中的环境检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21730630/