我试图在WAMP上将Laravel 4.1应用程序升级到5.1,并出现此错误:
Request.php第775行中的RuntimeException:未设置会话存储 请求。
在 d:\瓦帕\ WWW \ laravel-5.1 \厂商\ laravel \框架\ SRC \照亮\ HTTP \ Request.php 请求 - >会话()中的第775行 d:\ WAMP \ WWW \ laravel-5.1 \供应商\ laravel \框架的\ src \照亮\基金会\ HTTP \中间件\ VerifyCsrfToken.php 在VerifyCsrfToken-> addCookieToResponse(对象(请求),第137行, 对象(Response))在VerifyCsrfToken.php第64行中 VerifyCsrfToken->句柄(对象(Request),对象(Closure))at call_user_func_array(array(object(VerifyCsrfToken),'handle'), 在Pipeline.php第124行中的array(object(Request),object(Closure))) Pipeline-> Illuminate \ Pipeline {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 30在Pipeline-> Illuminate \ Routing {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 103在Pipeline->然后(对象(Closure))在ControllerDispatcher.php中 96号线 ControllerDispatcher-> callWithinStack(对象(BrowseController), 对象(Route),对象(Request),'getBrowseRecent')in ControllerDispatcher.php第54行at ControllerDispatcher-> dispatch(对象(Route),对象(Request), 'App \ Http \ Controllers \ BrowseController','getBrowseRecent')in 在Route-> runController(对象(请求))中的Route.php第174行 Route.php第140行在Route->在Router.php行中运行(对象(请求)) 703在Router-> Illuminate \ Routing {closure}(对象(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 139在Pipeline-> Illuminate \ Pipeline {closure}(object(Request))in ViewThrottleMiddleware.php第55行 ViewThrottleMiddleware->句柄(对象(Request),对象(Closure))at call_user_func_array(array(object(ViewThrottleMiddleware),'handle'), 在Pipeline.php第124行中的array(object(Request),object(Closure))) Pipeline-> Illuminate \ Pipeline {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 30在Pipeline-> Illuminate \ Routing {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 103在Pipeline->然后(对象(Closure))在Router.php第705行at Router-> runRouteWithinStack(object(Route),object(Request))in Router.php第678行在Router-> dispatchToRoute(object(Request))中 在Router-gtp中的Router.php第654行,在Kernel.php中的dispatch(对象(请求)) 第246行 Kernel-> Illuminate \ Foundation \ Http {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 139在Pipeline-> Illuminate \ Pipeline {closure}(object(Request))in CheckForMaintenanceMode.php第44行 CheckForMaintenanceMode-> handle(object(Request),object(Closure))at call_user_func_array(array(object(CheckForMaintenanceMode),'handle'), 在Pipeline.php第124行中的array(object(Request),object(Closure))) Pipeline-> Illuminate \ Pipeline {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 103在管道 - >然后(对象(Closure))在Kernel.php第132行at Kernel.php行中的Kernel-> sendRequestThroughRouter(object(Request)) 在index.php第54行中的Kernel->句柄(对象(请求))中的99
storage
文件夹是可写的,使用的会话驱动程序是file
。我搜索整个项目session()
,但发现它无处可寻。我该怎么做才能纠正这个错误?谢谢!
session.php
如下:
<?php
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => 120,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => null,
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'laravel_session',
'path' => '/',
'domain' => null,
'secure' => false,
];
编辑1 :我发现问题出在控制器中。有一条线:
$this->middleware('csrf', [ 'on' => 'post' ]);
我评论出来并且有效。但我还没弄清楚它为什么会引起这个问题。
答案 0 :(得分:0)
看看@Cas Bloem他的答案,这让我感到非常惊讶:
Laravel - Session store not set on request
这就是为什么它不适合我。因为你正在使用与CSRF令牌相匹配的会话(这是我最好的猜测,我自己也是Laravel的新手)。
此外,如果您转到app-&gt; http-&gt; middleware-&gt; VerifyCsrfToken,您可以添加路由到不会检查CSRF验证的阵列。这加上Cas Bloem他的修复(在routes.php的不同部分放置路由)解决了我的问题。我现在正在开发/学习localhost,但需要稍后实现。
希望这有助于/清除事情!