在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将如何知道我正在使用的环境?
我安装了新的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 …
注意:这个问题不是这些问题的重复:
我收到此错误:
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 文件中读取。
现在我已经通过在 Config/app.php 文件中手动指定键并在 Config/database.php 文件中设置数据库值解决了这个问题
我怀疑我对 .env 文件的权限/所有者有误。我正在Elementary OS 中开发
ubuntu http-status-code-500 laravel laravel-environment laravel-5.2
我有一个应用程序,我正在与Laravel一起写.我对框架仍然相当新,并且不了解大部分内容.我使用Algolia作为Laravel's Scout的搜索引擎.在您添加的模型中use Searchable,特征和记录会自动传递给Algolia,这很酷.我试图做一个简单的陈述if (App::environment('local'))" exit scout,因此我们不会将我们的开发数据发送给Algolia.如果我用完Algolia的10,000个记录的黑客级别,Scout也会抛出异常.