Laravel 5.0,env()在并发请求期间返回null

时间:2015-06-22 14:25:02

标签: laravel laravel-5

问题在于,当我尝试使用env('setting')\Config::get('setting')获取配置变量时,有时会返回null。

出于测试原因,我创建了一条简单的路线:

Route::get('/test', function () {
    $env = env('SETTING');
    if (!$env) {
        \Log::warning('test', [$env]);
    }
});

然后我使用了apache基准测试。结果是这样的:

  • 一次只调用一个请求(ab -n 100 -c 1 http://localhost/test)没有问题,日志文件中没有记录
  • 使用10个并发请求(ab -n 100 -c 10 http://localhost/test)调用我得到了大约20行:[2015-06-22 14:19:48] local.WARNING: test [null]

有谁知道,可能是什么问题?我的配置或php设置中是否缺少某些内容?

2 个答案:

答案 0 :(得分:1)

这是dotenv包中的一个已知错误 - 请参阅此处的讨论 https://github.com/laravel/framework/issues/8191

答案 1 :(得分:0)

这也发生在我身上。我的解决方法是在config/app.php,您必须添加此内容:

'setting' => env('SETTING'),

然后,当你想获得设置配置时,你必须这样做:

$env = config('app.setting');