标签: laravel-environment

在Laravel 5中设置ENV变量的正确方法是什么?

在laravel 4中我们有:

$env = $app->detectEnvironment(array(
    'local' => array('homestead')
));
Run Code Online (Sandbox Code Playgroud)

默认情况下.

但在laravel 5中,它改为:

$env = $app->detectEnvironment(function()
{
    return getenv('APP_ENV') ?: 'production';
});
Run Code Online (Sandbox Code Playgroud)

此外,他们在.gitignore中排除了.env.*行,现在它已经:

.env
Run Code Online (Sandbox Code Playgroud)

并添加了文件.env.example:

APP_ENV=local
APP_KEY=SomeRandomString
DB_USERNAME=homestead
DB_PASSWORD=homestead
Run Code Online (Sandbox Code Playgroud)

所以,如果我有超过2个环境,我现在必须在一个.env文件中设置所有这些吗?例如:

APP_ENV=local
DB_PASSWORD=123

APP_ENV=alpha
DB_PASSWORD=456
Run Code Online (Sandbox Code Playgroud)

如果我没有.env文件,laravel将如何知道我正在使用的环境?

php laravel laravel-5 laravel-environment

29
推荐指数
2
解决办法
7万
查看次数

Laravel 5配置 - 环境和覆盖

我安装了新的Laravel 5副本.

我的detectEnvironment函数是这样定义的:

$app->detectEnvironment(function()
{
    return 'local';
    return getenv('APP_ENV') ?: 'production';
});
Run Code Online (Sandbox Code Playgroud)

config\local我创建的database.php文件中:

<?php

return [
    'nothing' => 'new',
];
Run Code Online (Sandbox Code Playgroud)

我跑php artisan clear-compiled.

我的index方法WelcomeController是这样定义的:

public function index(Application $app)
{
    echo $app->environment();
    var_dump($app['config']['database']);
    //echo $app['config']['database'];
    return view('welcome');
}
Run Code Online (Sandbox Code Playgroud)

应用程序以这种方式导入: use Illuminate\Foundation\Application;

我得到的结果是:

local array(1) { ["nothing"]=> string(3) "new" } 
Run Code Online (Sandbox Code Playgroud)

而我希望Laravel能够将配置文件与生产程序级联(使用默认config\database.php文件).

奇怪的是,即使我return 'local';再次评论该行,php artisan clear-compiled它显示:

production array(1) { ["nothing"]=> string(3) "new" } 
Run Code Online (Sandbox Code Playgroud)

所以它似乎总是加载database.php文件内容(这一个来自本地文件夹)并覆盖主database.php …

php laravel laravel-5 laravel-environment

12
推荐指数
2
解决办法
1万
查看次数

Laravel 5.2 未从 ubuntu 上的 .env 读取

注意:这个问题不是这些问题的重复:

  1. Laravel 5.2 不读取 env 文件
  2. Laravel 5.2 .env 有时无法及时加载

我收到此错误:

production.ERROR: exception 'RuntimeException' with message 'No supported encrypter found. The cipher and / or key length are invalid.' in /home/coder/.local/share/Trash/files/myblog/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php:45
Run Code Online (Sandbox Code Playgroud)

当我尝试时,dd($config['key']);它返回“null”。甚至数据库环境变量也返回空值。所以这意味着 Laravel 没有从 .env 文件中读取。

  1. 是什么原因?
  2. 如何解决这个问题?

现在我已经通过在 Config/app.php 文件中手动指定键并在 Config/database.php 文件中设置数据库值解决了这个问题

我怀疑我对 .env 文件的权限/所有者有误。我正在Elementary OS 中开发

ubuntu http-status-code-500 laravel laravel-environment laravel-5.2

1
推荐指数
1
解决办法
3510
查看次数

如果环境不是生产,你会如何跳过Laravel Scout?

我有一个应用程序,我正在与Laravel一起写.我对框架仍然相当新,并且不了解大部分内容.我使用Algolia作为Laravel's Scout的搜索引擎.在您添加的模型中use Searchable,特征和记录会自动传递给Algolia,这很酷.我试图做一个简单的陈述if (App::environment('local'))" exit scout,因此我们不会将我们的开发数据发送给Algolia.如果我用完Algolia的10,000个记录的黑客级别,Scout也会抛出异常.

php laravel laravel-environment algolia laravel-scout

0
推荐指数
1
解决办法
666
查看次数