我正在尝试设置两个环境:本地和生产。
到目前为止,我添加了一个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=local
和APP_DEBUG=true
。
我的笔记本电脑的主机名称为Ben
。
我遇到的问题是php artisan env
总是返回Production
,因此我无法加载我的应用程序。
此外,在production.env
文件中,如果我将APP_DEBUG
变量更改为true或false,它对Web应用程序没有任何影响 - 它总是返回“Whoops,看起来像某样东西出了问题。“。
非常感谢任何帮助。谢谢。
答案 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)