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