问题是客户告诉我们我们可以使用我们想要的任何操作系统,所以我们像往常一样在CentOS上开发,当我们上线时,他们说“哦,新政策只有RHEL,对不起”。我们的应用程序完全适用于CentOS,但不适用于RHEL。
主要问题:
配置信息:
我有一个修复,但它没有意义: 在vendor / laravel / framework / src / Illuminate / Routing / Router.php
中在第1398行,改变这个:
public function filtersEnabled()
{
return $this->runFilters;
}
到此:
public function filtersEnabled()
{
return true;//$this->runFilters;
}
你知道这里发生了什么吗? 我无法在设置runFilters = false的任何地方找到配置选项。
答案 0 :(得分:12)
我终于找到了这个问题。 前一段时间我正在运行单元测试,在app / tests中我看到了这个:
class TestCase extends Illuminate\Foundation\Testing\TestCase {
public function createApplication(){
$unitTesting = true;
$testEnvironment = 'testing';
return require __DIR__.'/../../bootstrap/start.php';
}
所以我觉得“太棒了!$ testENvironment是可配置的。我讨厌'测试'默认,因为我们称之为QA环境,所以我将其改为”phpunit“,然后创建了app / config / phpunit / *它在开发过程中就像一个魅力。
当我将代码推送到我们的测试环境时,我开始收到有关会话为空的错误。 起初我认为laravel的数组会话处理程序被破坏了,所以我尝试了本机,但它也被打破了。 但后来我在整个代码中进行了一些日志记录,并发现实际上在过滤器没有运行之前,因此认证没有发生,因此会话是正确的空。 那么我跟踪代码执行从索引到开始自动包含到调度,然后在路由中找到这个小硬编码的宝石:
vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php
35 if ($app['env'] == 'testing')
36 {
37: $router->disableFilters();
38 }
将我们的测试环境重命名为'test',将'phpunit'环境重命名为'testing'解决问题。
也许我会做一个拉取请求,让env名称可配置:)