如何在 Laravel 5.1 中改变环境?

Posted

技术标签:

【中文标题】如何在 Laravel 5.1 中改变环境?【英文标题】:How to change the environment in Laravel 5.1? 【发布时间】:2015-10-07 23:45:00 【问题描述】:

我对 Laravel 中环境工作的理解是,对于不同的环境,您可以使用不同的环境。所以,如果你在本地运行你的应用程序,你可以有一个.env.local 文件。如果您正在测试或生产,您可以使用.env.testing.env.production(如果我错了,请纠正我。) 默认情况下,我们会得到可以编辑的.env 文件。但是谁能告诉我在 Laravel 中改变环境的工作流程是什么。我尝试了文档,但我无法得到它。请帮我。

【问题讨论】:

【参考方案1】:

当你安装 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

【讨论】:

非常感谢您的帮助。我很感激。 :)【参考方案2】:

.env.local.php.env.production.php 自 Laravel 5 以来已被弃用。现在,在 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 连接中获得结果

【讨论】:

如果我们仍在本地工作并且需要另一个数据库配置进行测试怎么办。那我们该怎么办呢? 非常感谢您的帮助。我很感激。 :) @HomoSapien 我相信你已经知道这一点了:) 但是任何人都在寻找答案 - 你现在(在 Laravel 6 及更高版本中)创建一个全新的 .env.testing 文件定义特定于测试环境的设置的项目根目录

以上是关于如何在 Laravel 5.1 中改变环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.1 中追加结果

如何在 css 中使用 $variable,Laravel 5.1 [关闭]

如何在 Laravel 5.1 中强制 FormRequest 返回 json?

如何在 Laravel 5.1 中编写这个(左连接、子查询)?

如何在 laravel 5.1 迁移中使用外键

如何在 laravel 5.1 中使用工匠制作视图