Mar*_*łek 12 php laravel laravel-5 laravel-environment
我安装了新的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文件.例如,当我更改此文件名时,它再次正常工作aaa.php.
它是一个错误还是环境配置不应该存储在config目录中?但如果没有,他们应该在哪里存放?我不知道这是一个错误还是一个功能,所以如果有人知道更多,请给我一个线索.
Mar*_*łek 13
虽然在Laravel dev(5.0)的文档中,有信息表明配置会级联,但事实并非如此.我在大约两周前对它进行了测试,目前似乎唯一能够为环境设置不同值的方法是使用ENV文件,其中为当前环境添加自定义值.将设置放在目录中将无法正常工作,但它可能会更改或者可能已在过去2周内更改过.