Laravel 5环境总是“生产”,当它实际上是“本地”

时间:2015-10-04 15:16:34

标签: php laravel environment-variables laravel-5.1

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

到目前为止,我添加了一个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,它对Web应用程序没有任何影响 - 它总是返回“Whoops,看起来像某样东西出了问题。“。

非常感谢任何帮助。谢谢。

4 个答案:

答案 0 :(得分:11)

我遇到了这个问题。我正在使用Laravel 5.2.14和宅基地。我修正了添加这一行的问题:

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

文件中的

config\app.php

我将Laravel应用程序从之前的版本升级,但不包含该行或者至少我没有。最新文件版本:

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

答案 1 :(得分:2)

Laravel 5.1中不再加载bootstrap/environment.php文件。 Laravel根据环境不加载不同的env文件。

Laravel现在只加载一个.env文件。此文件不应位于版本控制中。对于您的生产服务器,您只需将不同的值放入.env文件中。

有关详情,请参阅the docs

答案 2 :(得分: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环境变量来切换环境文件。代码默认为' .env.local'如果未设置APP_ENV。测试这适用于:

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

    $ ./artisan env
    Current application environment: local

Laravel自动将APP_ENV设置为'测试'当运行phpunit时(特别是在Foundation / Testing / TestCase类中),所以请确保你有一个' .env.testing'文件,如果你想在运行测试时使用不同的数据库设置等。

答案 3 :(得分:1)

对于Laravel> = 5.1

这是因为您的环境配置错误或.env文件设置不正确 试试this

php artisan config:clear

也许可以帮助你。

问候!