Laravel 5的环境总是显示为“生产环境”,实际上它应该是“本地环境”。

3

我正在尝试创建两个环境:本地和生产。

目前,我已经添加了一个 bootstrap/environment.php 文件,内容如下:

$env = $app->detectEnvironment(array(
    'local' => array('Ben'),
    'staging' => array('staging.domain.org'),
    'production' => array('domain.org'),
));

有两个 .env 文件 - .local.env.production.env,分别包含不同的环境变量,例如:APP_ENV=localAPP_DEBUG=true

我的笔记本电脑主机名为Ben

我遇到的问题是,php artisan env 始终返回 Production,因此我无法加载我的应用程序。

此外,在 production.env 文件中,如果我将 APP_DEBUG 变量更改为 true 或 false,则网页应用程序没有变化 - 它始终显示“糟糕,似乎出了些问题。”。

非常感谢您的帮助。谢谢。


你已将问题标记为 laravel-5.1,但你的代码在 5.1 中不起作用。由于 detectEnvironment 需要一个闭包,所以会抛出错误。 - Joseph Silber
我在发布这篇文章之前,按照这个教程 - http://stackoverflow.com/questions/31082173/laravel-5-environment-detection 进行操作,但是出现了“Call to a member function detectEnvironment() on null”错误。 - user860511
5个回答

12

我也遇到了这个问题。我正在使用Homestead Laravel 5.2.14。我通过添加以下行来解决问题:

'env' => env('APP_ENV', 'production'),

在文件:config\app.php中。

我将我的Laravel应用程序升级到之前的版本,该版本没有包含该行或者说我没有它。最新的文件版本在:

https://github.com/laravel/laravel/blob/master/config/app.php


这似乎有效。在我添加这行代码之前,“production”来自何处仍然让我困惑...? - thesunneversets
1
在laravel 5.4中遇到了这个问题。由于我是从composer update直接升级从5.1到5.4的,错过了laravel网站上的升级说明导致出现了这个问题。 - Mysteryos

2
在Laravel 5.1中,不再加载bootstrap/environment.php文件。Laravel不会根据环境加载不同的env文件。
现在,Laravel仅加载单个.env文件。该文件不应包含在您的版本控制中。对于您的生产服务器,您只需将不同的值放入.env文件即可。
有关更多信息,请阅读文档

是的,我最初阅读了文档,但对于像我正在尝试设置的多个环境来说,它并不特别详细 - 特别是如何指定您的“local”和“production”名称。 - user860511
请问您有关于如何检测多个环境的指导吗? - user860511
不需要设置多个环境,只需在每个服务器上更改.env文件中的实际值即可。 - Joseph Silber
但是Laravel如何检测是否使用我的本地环境,因为我在笔记本电脑上,还是使用生产环境,因为它已经上线了呢? - user860511
再次强调,只使用一个文件。在您的本地计算机上,该文件将包含您本地环境所需的信息。在您的生产计算机上,该文件将包含您生产环境所需的信息。 - Joseph Silber

1

针对 Laravel >= 5.1

这是因为您的环境配置错误或者您的 .env 文件未正确设置。
请尝试this

php artisan config:clear

也许这可以帮到你。
敬礼!

1

这在 Laravel 5 中让我十分困扰。我解决它的方式是在 bootstrap/app.php 的末尾添加以下内容:

    $app->detectEnvironment(function () use($app) {
        $env = env('APP_ENV', 'local');
        $file = ".env.{$env}";
        $app->loadEnvironmentFrom($file);
    });

然后为每个环境添加文件,例如.env.local、.env.production等。

现在您可以通过设置APP_ENV环境变量来切换环境文件。如果未设置APP_ENV,则代码默认为“.env.local”。使用以下命令测试是否有效:

    $ APP_ENV=production ./artisan env
    Current application environment: production

    $ ./artisan env
    Current application environment: local

当运行phpunit时,Laravel会自动将APP_ENV设置为“testing”(具体在Foundation/Testing/TestCase类中),因此请确保您有一个“.env.testing”文件,以便在运行测试时使用不同的数据库设置等。

0

前往Laravel中的.env文件并设置您的

PAYTM_ENVIRONMENT=production

PAYTM_MERCHANT_ID={// Your production MID}

PAYTM_MERCHANT_KEY={// Your production Merchant key}

PAYTM_MERCHANT_WEBSITE=DEFAULT

PAYTM_CHANNEL=WEB

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