如何在Laravel 5.1中更改环境?

19

我对 Laravel 环境的工作原理的理解是,你可以为不同的环境配置不同的环境变量文件。如果你在本地运行应用程序,可以使用 .env.local 文件;如果你在测试或生产环境下,则可以使用 .env.testing.env.production(如果我理解有误,请纠正我。)
默认情况下,我们可以编辑 .env 文件。但是有没有人能告诉我如何更改 Laravel 中的环境?我已经查看了文档,但是无法理解。请帮帮我。

3个回答

34

当你安装 Laravel 5.1 时,会获得两个文件.env.env.example。如果想在本地工作,则需要设置:

APP_ENV=local
APP_DEBUG=true

在生产中您设置

APP_ENV=production
APP_DEBUG=false

调试模式下的错误信息

这里输入图片描述

生产模式下的错误信息

这里输入图片描述

注:您有两个.env文件.env.env.example,您还可以创建另一个名为.env.production的文件,但请记住,为了加载您的配置,您必须将文件重命名为.env

编辑:所以,如果您仍在本地工作并需要另一个数据库进行测试,您可以创建另一个文件,因此您总共有3个.env文件:

.env.production
.env.local1
.env.local2

每当您想切换配置时,只需将所需的文件重命名为 .env。


非常感谢您的帮助,我很感激。 :) - Homo Sapien

9
自 Laravel 5 开始,使用 .env.local.php.env.production.php 的想法已被弃用。现在,在 L5 中,我们有一个单一的 .env 文件,您可以将所有环境配置存储在其中。要定义您的环境,您应该将 APP_ENV=local 放入此文件中。
一旦您在生产环境上部署了您的项目,您将在服务器上创建 .env 文件并定义 APP_ENV=production
如果您使用 Laravel Forge 等服务,则提供了一种简单的方法来存储您的环境数据。但那是另外一个故事:)
编辑
要使用多个数据库连接,您可以执行以下操作:
在您的 config/database.php 文件中。
<?php
return array(

'default' => env('DEFAULT_DB_CONNECTION', 'mysql'),

'connections' => array(

    # Our primary database connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Our secondary database connection
    'another_mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host2',
        'database'  => 'database2',
        'username'  => 'user2',
        'password'  => 'pass2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
),

然后,在 .env 文件中添加另一个键。
DEFAULT_DB_CONNECTION=another_mysql

当然,这有点预定义了您的连接。如果您想要更加动态,可以尝试以下方法。
$users = DB::connection('another_db_connection')->select('users somehow');

这样,您将从您的第二个MySQL连接中获取结果,无论环境设置如何。

2
如果我们仍在本地工作,并且需要另一个数据库配置进行测试,那么我们该怎么办? - Homo Sapien
非常感谢您的帮助。我很感激。 :) - Homo Sapien
@HomoSapien 我相信你现在已经弄清楚了 :) 但是任何寻找答案的人 - 现在(在Laravel 6及以上版本中)可以在项目根目录中创建一个全新的.env.testing文件,该文件定义了与测试环境相关的设置。 - Almazik G

0

另一种轻松切换环境的方法 - 是强制缓存所需的.env文件。例如,我在我的开发环境中有以下.env

  • .env - 用于本地开发
  • .env.testing - 用于单元测试
  • .env.staging - 用于使用暂存数据库的本地测试

要快速切换.env,只需运行以下命令: php artisan config:cache --env=staging 或者使用别名: art config:cache - 这将缓存.env


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接